如何从特定项位置开始显示列表视图

3

我有一个包含300首mp3歌曲的列表视图,假设当前正在播放第52首歌。那么下一次用户打开歌曲列表时,他面前的列表行必须从第52行开始(上下仍然是行)。我尝试使用了

public View getViewByPosition(int pos, ListView listView) {
    final int firstListItemPosition = listView.getFirstVisiblePosition();
    final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;

    if (pos < firstListItemPosition || pos > lastListItemPosition ) {
        return listView.getAdapter().getView(pos, null, listView);
    } else {
        final int childIndex = pos - firstListItemPosition;
        return listView.getChildAt(childIndex);
    }
}

同时还有

adapter.getItem(52);

但这两种方法都是无意义的,且不能带我到第52行。(这些方法是我使用过的,但可能不是解决方案)。同时我在谷歌上找不到任何解决办法。如果您能处理这个问题,请告诉我!!感谢您的倾听!
2个回答

11

这行代码将从顶部选择n行:

listview.setSelectionFromTop(n, 0);

如果您想选择第52行,则需要在设置适配器后,在活动开始时编写以下代码:

listview.setSelectionFromTop(52, 0);

1
谢谢,它运行得很好!(因为声望不够,无法点赞) - user1460340

1
尝试这个:

链接

listview.smoothScrollToPosition(yourPosition);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接