列表视图java.lang.IllegalStateException甚至在调用notifyDataSetCanged()之后;

时间:2012-04-20 07:10:05

标签: android listview android-listview illegalstateexception

java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保不从后台线程修改适配器的内容,而只是从UI线程修改。

我的列表视图包含大量数据

在列表中更改数据时使用处理程序调用波纹管代码

  listviewAdapter.notifyDataSetChanged();

但我有时会得到同样的错误,而不是每次加载它 提前谢谢

3 个答案:

答案 0 :(得分:2)

问题不是适配器更新的地方,应该是:适配器更新的时间

它看起来像:你的数据绑定到适配器已被更改,并且ui已被更新,所以这次,系统发现数据已更改,但无法调用notifyDataSetChanged

所以,建议您在更改适配器数据时立即调用notifyDataSetChanged

不要直接更改线程中的适配器数据,您应该将数据发送到hanlder,并使用数据替换{更改或更改适配器'handler。数据和notifyDataSetChanged

所以无论如何,建议获取数据可以在后台线程中运行,并更新ui线程中使用的数据notifyDataSetChanged

答案 1 :(得分:0)

错误很明显。您不必从与UI线程不同的线程调用listviewAdapter.notifyDataSetChanged();

答案 2 :(得分:0)

在runOnUIThread()中修改适配器的参数,或使用处理程序通知适配器数据集已更改。