文档章节

Recycleview notifyDataSetChanged()方法调用出现IllegalStateException 问题的解决

博为峰教研组
 博为峰教研组
发布于 2016/11/08 11:26
字数 349
阅读 271
收藏 0
点赞 0
评论 0

关于Android Recycleview notifyDataSetChanged()方法调用出IllegalStateException 问题的解决。

最近写代码使用到了recyclerview,其中界面有一个Checkbox的点击,点击之后是需要刷新界面的相关数据的逻辑的,但是在刷新的时候报了状态异常,个人分析了一下原因:提示说Cannot call this method while RecyclerView is computing a layout or scrolling android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.Java:1462),RecyclerViewAdapter显然是用一个类似线程的东西写的,我们可以在里面看到很多父类线程的踪影,那么可以分析出出错的原因是因为RecyclerViewAdapter正在更新RecyclerView,也就是调用OnBindViewHolder的时候我们又来调用Notifydatasetchanged方法,这个方法也是刷新界面,最终肯定也是调用OnBindViewHolder,同时调用自然会抛出这个异常,当然,涉及到线程问题,那就肯定涉及到同步跟异步的问题。 
解决方法,使用handler类排队,等待recyclerview 更新结束之后再刷新。

备注:由于我并没有分析RecyclerView 以及这个View的Adapter,所以我不保证我的分析一定是对的,如果有错误,希望大家在评论中指出来,一起研究,但我通过这个分析毕竟解决了这个问题,不管原因对与不对,能解决问题就行。

© 著作权归作者所有

共有 人打赏支持
博为峰教研组
粉丝 49
博文 1224
码字总数 479077
作品 0
黄浦
程序员
Android 面试题之Listview(不断更新)

以下所有内容以及实用的知识点已被整理app,欢迎下载 下载方式一:酷安商城搜索Android_程序猿即可下载 下载方式二:扫描下载二维码进行下载 image.png Android 面试题之J2EE(不断更新) An...

蛋蛋松
2017/12/05
0
0
listView adapter 的java.lang.IllegalStateException

java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a......

Jonson
2016/05/16
23
0
自定义BaseAdapter完美解决ListView异常:java.lang.IllegalStateException

在我们Android 开发中,ListView是在常用不过的控件了。但是有时候会爆出这种异常,就搞得好尴尬了。 明明我们在代码中的确是有调用adaptor.notifyDataSetChanged()这个方法的,明显没问题啊...

xiaolei123
2016/10/25
43
0
ListView嵌套ListView缓存失效问题

ListView嵌套ListView缓存失效问题 Android中在写列表的时候,相信很多时候,我们都需要进行ListView嵌套ListView编程。比如说:帖子+评论页面的编写。然而这种模型是会出现被嵌套ListView缓...

精通吹水
2016/03/20
120
0
Android面试题:Listview

今日,看到群里朋友发的一部分面试题,决定把这这些面试题的答案写下来,如下: 1、ListView怎么和ScrollView兼容? ok 2、ViewPager无限轮播图片 3、out of memory内存溢出怎么解决 4、三级...

微笑的江豚
2016/06/22
101
0
RecyclerView 梳理

初识RecyclerView RecyclerView是官方推出的可以灵活展示大量数据的View控件,比ListView更加灵活也更强大。 术语 RecycleView中有些属性值得我们注意。 Adapter,继承自RecyclerView.Adapte...

kiplening
2017/09/04
0
0
ViewPager,PagerAdapter总结

在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.not...

CrazyManDF
2016/05/11
82
0
[译]Workcation App – 第三部分. 带有动画的标记(Animated Markers) 与 RecyclerView 的互动

原文地址:Workcation App – Part 3. RecyclerView interaction with Animated Markers 原文作者:Mariusz Brona 译文出自:掘金翻译计划 译者:龙骑将杨影枫 校对者:Vivienmm、张拭心 Wo...

龙骑将杨影枫
2017/06/05
0
0
android常见bug及解决方案总结

空指针 解决方案 不确定对象在使用前先做是否为空判断 特别注意:fragment getActivity为null处理 数组越界 解决方案 使用索引值获取对象值时,需判断索引值是否小于数据源大小 example: Li...

码无止境
2016/12/09
0
0
ViewPager 和fragment集合使用的问题。

我在ViewPager 中使用fragment的时候,总是报下面的错,请问怎么回事?如何解决哦? java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents wit...

天王盖地虎626
2016/07/31
360
6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

百度云iOS架构师在职场中的忠告

1.工具不能代替思考 在我多年的咨询工作和与许多组织和管理者的共事中,我发现了修复问题的共同套路,那就是管理人员相信工具可以“解决”给出的问题。当问题域被理解透彻,并且不可能有很多...

_小迷糊
22分钟前
0
0
Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
34分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
38分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
42分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
43分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
48分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
55分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
59分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
今天
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部