您的位置:首页 > 其它

关于adapter的数据更新问题

2016-12-01 12:23 302 查看
明明执行了notifyDataSetChanged()方法,但是还是会报The content of adapter has changed,but can't receive a notify异常!

原因是,原来不只是这一句代码要在主线程中,而且改变数据内容的代码也要在主线程中!否则会出现不一致的异步问题,你就会发现,跑断点时正常,运行时出错!

修改前:

//刷新完成变成第二页
mPage = 1;
List l = JsonUtils.parseJsonArray(jsobj.getJSONArray("results"));
mListData.clear();
mListData.addAll(l);
Main.sHandler.post(new Runnable() {
@Override
public void run() {
//更新数据
mListViewAdapter.notifyDataSetChanged();
// 千万别忘了告诉控件刷新完毕了哦!
mRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
}
});

修改后:

//刷新完成变成第二页
mPage = 1;
final List l = JsonUtils.parseJsonArray(jsobj.getJSONArray("results"));
Main.sHandler.post(new Runnable() {
@Override
public void run() {
//更新数据
mListData.clear();
mListData.addAll(l);
mListViewAdapter.notifyDataSetChanged();
// 千万别忘了告诉控件刷新完毕了哦!
mRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
}
});

其中mListData是和adapter关联的数据集合,修改它也要在主线程中!!!

谢谢点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: