java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification
2015-08-16 10:42
537 查看
ListView UI重绘时触发layoutChildren, 此时会校验listView的mItemCount与其Adapter.getCount是否相同,不同报错。
ListView.layoutChildren:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/be547ea75ee056dcf667347bcc95a70d.png)
mItemCount是在父类AdapterView中定义的,package类型
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/dc0c66554bfa0bf4b23b7e0d2947c456.png)
在两个地方mItemCount会被赋值,初始设置Adapter时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/e12c6e12f023139236fba16156c5b6c3.png)
xxAdapter.notifyDataSetChanged时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/7140f9bdd01059c9feeaf7c720d4569c.png)
因此一定要确保修改adapter数据和notifyDataSetChanged是coupled出现的,否则在特定时序下很容易出现上述异常。
ListView.layoutChildren:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/be547ea75ee056dcf667347bcc95a70d.png)
mItemCount是在父类AdapterView中定义的,package类型
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/dc0c66554bfa0bf4b23b7e0d2947c456.png)
在两个地方mItemCount会被赋值,初始设置Adapter时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/e12c6e12f023139236fba16156c5b6c3.png)
xxAdapter.notifyDataSetChanged时:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/7140f9bdd01059c9feeaf7c720d4569c.png)
因此一定要确保修改adapter数据和notifyDataSetChanged是coupled出现的,否则在特定时序下很容易出现上述异常。
相关文章推荐
- java环境变量配置
- 《Java设计模式》之桥接模式
- Eclipse 常用正则表达式
- JVM-java内存管理(1)
- 在java项目中如何利用Dom4j解析XML文件获取数据
- Java注释@interface的用法【转】
- [连载]Java程序设计(04)---任务驱动的方法:工资结算系统
- spring+hibernate常见异常集合
- java:Iterator和ListIterator
- 改善Java文档的理由、建议和技巧
- Java中的动态绑定详解
- Java日志框架——不同日志框架转换,日志记录请求的Level值不能一一映射
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- 《Java设计模式》之合成模式
- java中int类型转化为String类型的几种方法
- 简述Java内存泄露
- 《Java设计模式》七大原则
- 《Java设计模式》之接口模式
- java工具类(七)实现给定任意年份和月份得出天数
- java工具类(七)实现给定任意年份和月份得出天数