Android - 如何停止ListView.setAdapter();中断滚动视图?

时间:2014-08-05 21:02:55

标签: android listview android-listview

我有一个带有方法(public ArrayAdapter<String> populateListView(){})的ListView来更新适配器。我称之为lv.setAdapter(populateListView();每500毫秒。这是有效的,但是如果我向下滚动ListView,当调用该方法时,它会重置我的视图并自动滚动到顶部。因此,如果我的ListView减少了80%,那么当调用该方法时,我将重置为0%。

如何在不重置滚动位置的情况下不断填充ListView?

我已经尝试在设置适配器之前调用lv.getScrollY();,然后lv.setScrollY();,但这并没有帮助。我也尝试过调用lv.scrollTo(0, scrollY);,但这没有用。

更新适配器时如何停止重置滚动位置?

1 个答案:

答案 0 :(得分:1)

尝试更新适配器中的项目并调用adapter.notifyDataSetChanged(),而不是创建新的适配器。

示例:

adapter.replaceItems(yourNewListWithData);
adapter.notifyDataSetChanged();

你必须自己实现replaceItems方法。

public void replaceItems(List<? extends E> newItems) {
    entries.clear();
    entries.addAll(newItems);
}