我有一个listview,使用XML解析每5秒刷新一次。刷新后,列表的当前位置返回到第一个位置。有没有办法解决这个问题?
答案 0 :(得分:5)
通过使用setAdapter()更新列表,Android会重置位置。请尝试改变适配器。
我不知道你正在使用哪个适配器,所以这里有两个例子。
ArrayAdapter
adapter = list.getAdapter();
if (adapter == null) {
// Create new adapter + list.setAdapter()
} else {
adapter.clear();
adapter.addAll(newData);
adapter.notify(notifyDataSetChanged());
}
的CursorAdapter
adapter.changeCursor(newCursor);
答案 1 :(得分:3)
使用lv.smoothScrollToPosition(pos)
其中pos可以是任何int,最好是适配器的长度,如果你希望listview autoscroll 到最后添加的条目,因为它被刷新。
public void smoothScrollToPosition (int position)
Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed.
答案 2 :(得分:2)
此代码可以帮助您....
// get position of listview
int index = listView.getFirstVisiblePosition();
View v = listView.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
// notify dataset changed or re-assign adapter here
//re-assign the position of listview after setting the adapter again
listView.setSelectionFromTop(index, top);
干杯:)
答案 3 :(得分:-1)
试试这个
adapter.notifyDataSetChanged();