我有一个带有方法(public ArrayAdapter<String> populateListView(){}
)的ListView来更新适配器。我称之为lv.setAdapter(populateListView();
每500毫秒。这是有效的,但是如果我向下滚动ListView,当调用该方法时,它会重置我的视图并自动滚动到顶部。因此,如果我的ListView减少了80%,那么当调用该方法时,我将重置为0%。
如何在不重置滚动位置的情况下不断填充ListView?
我已经尝试在设置适配器之前调用lv.getScrollY();
,然后lv.setScrollY();
,但这并没有帮助。我也尝试过调用lv.scrollTo(0, scrollY);
,但这没有用。
更新适配器时如何停止重置滚动位置?
答案 0 :(得分:1)
尝试更新适配器中的项目并调用adapter.notifyDataSetChanged(),而不是创建新的适配器。
示例:
adapter.replaceItems(yourNewListWithData);
adapter.notifyDataSetChanged();
你必须自己实现replaceItems方法。
public void replaceItems(List<? extends E> newItems) {
entries.clear();
entries.addAll(newItems);
}