我有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行。(这些方法是我用过的,但可能不是解决方案)而且我没有得到谷歌搜索的解决方案。如果你们能解决这个问题,请告诉我!
非常感谢你的聆听!
答案 0 :(得分:11)
此行将从顶部开始选择n行:
listview.setSelectionFromTop(n, 0);
因此,对于您的情况,因为您想要选择52行,您必须在设置适配器后在活动开始时使用以下代码
listview.setSelectionFromTop(52, 0);
答案 1 :(得分:1)
试试这个: link
listview.smoothScrollToPosition(yourPosition);