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 行。(这些方法是我使用的,但可能不是解决方案)我也没有找到解决方案谷歌搜索它。请让我知道你们是否可以处理这个!

非常感谢您的聆听!

4

2 回答 2

12

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

listview.setSelectionFromTop(n, 0);

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

listview.setSelectionFromTop(52, 0);
于 2015-01-22T07:12:19.810 回答
1

试试这个: 链接

listview.smoothScrollToPosition(yourPosition);
于 2015-01-22T07:30:26.053 回答