【发布时间】:2017-01-12 10:40:55
【问题描述】:
我想把大量的add delete计算工作放在worker线程上,notifyDataSetChanged工作放在ui线程上。在它的基础上避免java.lang.IllegalStateException。例外情况如下: java.lang.IllegalStateException:适配器的内容已更改,但 ListView 没有收到通知。确保适配器的内容不是从后台线程修改的,而只是从 UI 线程修改的。确保您的适配器在其内容更改时调用 notifyDataSetChanged()。
代码简写如:
new Thread(){
@Override
public void run() {
for(int i=0; i<5000; i++){
mDatas.add(i);
}
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.notifyDataSetChanged();
}
});
}
}.start();
我在网上搜索了很长时间。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。
【问题讨论】:
-
什么是 mAcitvity ?
-
您也可以尝试在 UI 线程 中添加数据和 notifyDataSetChanged。
-
@jaydroider 谢谢,我读了这个问题,但没有找到完美的答案。
-
@quick learner 这是当前活动
标签: android