Java 适配器的内容已更改,但ListView未收到通知-Android

Java 适配器的内容已更改,但ListView未收到通知-Android,java,android,Java,Android,我在网上浏览了很多内容,但没有一条建议有效。我有一个listview,它有时工作,有时会使我的应用程序崩溃,原因如下: 适配器的内容已更改,但ListView未收到 通知。确保未修改适配器的内容 来自后台线程,但仅来自UI线程。确保你的 适配器在其内容更改时调用notifyDataSetChanged() 我肯定是在调用notifyDataSetChanged()(在异步任务的onPostExecute()中)。我已经按照在线示例的建议尝试在主线程上运行它,如下所示: getActivity()

我在网上浏览了很多内容,但没有一条建议有效。我有一个listview,它有时工作,有时会使我的应用程序崩溃,原因如下:

适配器的内容已更改,但ListView未收到 通知。确保未修改适配器的内容 来自后台线程,但仅来自UI线程。确保你的 适配器在其内容更改时调用notifyDataSetChanged()

我肯定是在调用
notifyDataSetChanged()
(在异步任务的
onPostExecute()
中)。我已经按照在线示例的建议尝试在主线程上运行它,如下所示:

getActivity().runOnUiThread(new Runnable() {
                public void run() {
                    CAdapterFilter.notifyDataSetChanged();
                }
            });
但这也不起作用。但我的应用程序仍会在随机时间崩溃。有人能在这里说明一下吗?为什么它只是随机崩溃,而不是每次。我缺少什么?

试试这个:-

doInBackground(....) {
 mPseudoList.addAll(fetched_list);
 return xyz;
}

onPostExecute(...) {
 mAdapterList.addAll(mPseudoList);
 mAdapter.notifyDataSetChanged();
}
更改
onPostExecute(…)
中的
适配器列表
引用,然后通知适配器

注意:-


doInBackground
中,不要更新适配器持有的引用的列表,而是使用
伪列表
并在
onPostExecute

中更新适配器引用列表。是否在UI或后台线程上向适配器添加项目?notifyDataSetChanged()只有在使用add()、delete()和update()方法更改数据时才会收到通知。我们应该猜到错误吗?您的
logcat错误是否是恼人的ListView异常?我有一个自定义适配器,在doInBackground过程中添加项目?这就是问题所在吗?是否应该在PostExecute上添加它?@Santanu-你显然没有阅读我的问题,因为我引用了错误。这基本上是我采用的方法,它有效,因此我会接受答案。谢谢