Android - 如何停止 ListView.setAdapter();打断 ScrollView ?

标签 android listview android-listview

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

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

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

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

最佳答案

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

例子:

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

您必须自己实现 replaceItems 方法。

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

关于Android - 如何停止 ListView.setAdapter();打断 ScrollView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148262/

相关文章:

android - Phonegap 错误 : ANDROID_HOME is not set

Android - 滚动/移动 ListView 本身

c# - .Net 中的同步 ListView

android - Android 4.4 中的快速滚动问题

Android:ImageView 放大源图像

android - 如何修复 Android Studio 的错误

android - 如何使用 jCIFS 使用默认查看器在 Android 中打开文件

css - 以相等的 block 显示 React native ListView 项

android - 在 ListView 中加载图像后, ListView 滚动非常慢

android - 如何在ListView中绘制水平线?