java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保不从后台线程修改适配器的内容,而只是从UI线程修改。
我的列表视图包含大量数据
在列表中更改数据时使用处理程序调用波纹管代码
listviewAdapter.notifyDataSetChanged();
但我有时会得到同样的错误,而不是每次加载它 提前谢谢
答案 0 :(得分:2)
问题不是适配器更新的地方,应该是:适配器更新的时间。
它看起来像:你的数据绑定到适配器已被更改,并且ui已被更新,所以这次,系统发现数据已更改,但无法调用notifyDataSetChanged
。
所以,建议您在更改适配器数据时立即调用notifyDataSetChanged
,
或
不要直接更改线程中的适配器数据,您应该将数据发送到hanlder
,并使用数据替换{更改或更改适配器'handler
。数据和notifyDataSetChanged
。
所以无论如何,建议获取数据可以在后台线程中运行,并更新ui线程中使用的数据notifyDataSetChanged
。
答案 1 :(得分:0)
错误很明显。您不必从与UI线程不同的线程调用listviewAdapter.notifyDataSetChanged();
。
答案 2 :(得分:0)
在runOnUIThread()中修改适配器的参数,或使用处理程序通知适配器数据集已更改。