Android Listview 在适配器更改后保留旧项目

标签 android list listview listadapter

我尝试在 Android 中更改 Listview 的内容。之后,我希望重新绘制列表。不幸的是,列表元素发生了变化,但旧项目显示在后台。如果新列表中的项目较少,旧项目似乎仍然是列表的一部分,因为它们仍然显示,即使它们不可点击。如果我通过 Android Taskmanager 跳出应用程序,然后再次打开应用程序,列表就会正确显示! 因此我认为这一定是刷新的问题。

我如何尝试实现它:

随着完整内容的更改,我创建了一个传递给 ListView 的新适配器。在我的代码中,“收藏夹”是我传递给适配器的新数组。我还尝试清除列表并使其无效。所有这些都发生在 UI 线程中(AsyncTask 的 onPostExecute)

    MyAdapter newAdapter = new MyAdapter(
            context, favorites);
    MyAdapter current_adapter = (MyAdapter) myList.getAdapter(); 
    if((current_adapter!=null)){
    current_adapter.clear();}

    myList.setAdapter(null); //inserted this because of answers, but with no effect.
    myList.setAdapter(newAdapter);
    myList.invalidateViews();

适配器的清除方法:

    public void clear(){
    items.clear();
    notifyDataSetChanged();
    }

如您所见,我尝试了她在 stackoverflow 上遇到的类似问题的所有解决方案。不幸的是没有任何效果......

提前感谢您提供解决此问题的任何想法。

编辑:

我也曾尝试在传递新适配器之前将适配器设置为 null,但也没有效果。 .setAdapter(null);

此外,如果我通过单击 editText 打开键盘,屏幕会刷新并且列表会正确显示。

最佳答案

你试过 myList.setAdapter(null); 了吗?

关于Android Listview 在适配器更改后保留旧项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18611267/

相关文章:

c++ - 我的链表实现是否泄漏内存?

Python 列表和相等

c# - 通过命令 (MVVM) 选择 ListView 中的所有项目

android - 如何获取ListView中子项的实际索引?

android - 安装android sdk启动包报错

android - 防止 HttpClient 4 跟随重定向

python - python中的图像旋转令人困惑

android - 安装 Studio 2.2.1 后出现 "Gradle project refresh failed"错误(无编码!)

android和opencv项目中Java实例化错误

android - 无法在 ListView 项目中正确选择文本