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

时间:2015-01-22 07:01:33

标签: android android-listview adapter getview

我有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 个答案:

答案 0 :(得分:11)

此行将从顶部开始选择n行:

listview.setSelectionFromTop(n, 0);

因此,对于您的情况,因为您想要选择52行,您必须在设置适配器后在活动开始时使用以下代码

listview.setSelectionFromTop(52, 0);

答案 1 :(得分:1)

试试这个: link

listview.smoothScrollToPosition(yourPosition);