我有一个包含大量数据的ListView。但是当我转到ListView项目的下一页时单击并返回ListView。 我希望列表滚动到之前的相同位置。有人帮助实现此目的。
我试过这个code.List要滚动到同一个点,但立即到达第一个位置。
private void populateList() {
descArray.clear();
List<All_Post> allDesc = dbhelper.getAllDescriptions();
for (All_Post all_Post : allDesc)
{
descArray.add(all_Post);
}
if (adapter == null)
{
adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
listView.setAdapter(adapter);
}
else if (adapter != null) {
adapter.notifyDataSetChanged();
adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
listView.setAdapter(adapter);
//int firstPosition = listView.getFirstVisiblePosition();
//listView.setSelection(firstPosition);
int index = listView.getFirstVisiblePosition();
View v = listView.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());
listView.setSelectionFromTop(index, top);
}
}
答案 0 :(得分:2)
它是listview的默认属性。
if you move to next page on ListView Item Click and come back to ListView it will show same position
。
请记住一点, 你不应该在backpressed()上刷新listview,或者当你回到listview或者你正在使用的任何其他方式移回listview时 < / strong>。
答案 1 :(得分:1)
您可以在 listView 的OnItemClickListener
中保存列表视图项的点击位置。
当你回到 listView 并使用
- listView.smoothScrollToPosition (position)
答案 2 :(得分:0)
您可以在saveInstanceState中跟踪位置,然后在返回相同的活动时获取相同的位置(如果您正在销毁活动)或 当您单击该项目时,您可以保存位置并使用它(如果您不喜欢该活动)。
然后,一旦你有了这个职位,你可以使用:
要直接滚动,请使用: getListView()为setSelection(位置);
要平滑滚动,请使用: 。getListView()smoothScrollToPosition(位置);
答案 3 :(得分:0)
试试这个:public int pos_clicked = -1;
on list view item click :
pos_clicked = listView.getFirstVisiblePostion();
回来了: if(pos_clicked != -1)
listView.setSelection(pos_clicked);