Android:java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知

时间:2015-03-29 11:21:50

标签: java android listview exception android-asynctask

该异常建议我调用notifyDataSetChanged(),但我已经在onPostExecute方法上调用了该方法,如您所见:

Constants.newsDownloaded = true;
TempStorage.downloadedNews = this.items;
this.progress.setVisibility(View.INVISIBLE);
this.downloadMore.setVisibility(View.VISIBLE);
adapter = new NewsListAdapter(context,
                inflater, this.items);

if (index <= 26){
    listView.setSelection(0);
} else{
    listView.setSelection(TempStorage.firstAddedIndex);
}

listView.setAdapter(adapter);
adapter.notifyDataSetChanged();

如您所见,每次调用都会重新创建适配器。我只在Nexus 5上遇到这个问题,其他设备运行完美。

这段代码出了什么问题?

谢谢你的帮助,伙计们!

1 个答案:

答案 0 :(得分:1)

我认为你应该删除notifyDataSetChanged行。无论如何,您正在创建一个新的适配器实例,为什么要立即对它进行修改?它有正确的更新数据,因为你有一个新实例。

我曾经在类似的情况下遇到同样的崩溃,更新我在适配器中查询的数据。通过在我的onPostExecute中创建一个新的适配器实例,我摆脱了崩溃。