文档章节

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

博为峰教研组
 博为峰教研组
发布于 2016/11/08 11:26
字数 349
阅读 292
收藏 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,所以我不保证我的分析一定是对的,如果有错误,希望大家在评论中指出来,一起研究,但我通过这个分析毕竟解决了这个问题,不管原因对与不对,能解决问题就行。

© 著作权归作者所有

共有 人打赏支持
博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
RecycleView的notifyItemRemoved使用注意

转载请标明出处:https://www.cnblogs.com/tangZH/p/10116095.html 我们为了移除RecycleView的某一项,会用RecycleView的notifyItemRemoved(int position)方法,但是需要注意的是: 1、用该...

妖久
2018/12/13
0
0
Scrapped or attached views may not be recycled

在使用recycleView的时候出现了错误Scrapped or attached views may not be recycled 原因: view没有被recycled,recyclerView的数据进行清空操作之后,在重新添加数据之前忘记了通知界面进...

妖久
2018/08/27
0
0
ListView卡顿的原因以及优化策略

转载自:https://blog.csdn.net/u014657752/article/details/83592684 重用converView: 通过复用converview来减少不必要的view的创建,另外Infalte操作会把xml文件实例化成相应的View实例,...

犀牛有脾气
2018/12/29
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

没有更多内容

加载失败,请刷新页面

加载更多

echarts实现中国地图

最近项目中有个需求:在地图上展示各省市的数据分布,像这样: 项目中接入的图表展示工具是echart,查了echart官网,发现并没有中国地图相关的实现,唯一接近的,只有香港18区人口密度。没办...

Funcy1122
20分钟前
0
0
持续集成工具Jenkins结合SVN的安装和使用

持续集成工具Jenkins结合SVN的安装和使用 2018年06月08日 11:30:23 止步前行 阅读数:2932 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxd1435513775/ar...

linjin200
28分钟前
0
0
ES6 对象的解构赋值

基本用法 1.等号右边如果不是数组,将会报错(不是可遍历结构) 2.解构赋值 var, let, const命令声明均适用 3.set结构也可解构赋值(具有Iterator接口,可采用数组形式结构赋值) set解构:任何...

Jack088
30分钟前
2
0
微信小程序富文本table超出宽度处理

一、微信小程序富文本table超出宽度处理 处理思路: 使用正则删除table中的width属性。 //去除table的宽度content = content.replace(/<table[^>]*>/gi, function (match, capture) { ...

tianma3798
31分钟前
0
0
阿里云全站加速DCDN全面支持WebSocket协议

WebSocket协议可以为网站和应用提供真正的双向通信,具有控制开销、保持连接状态、更强实时性、更好的压缩效果等优点,是当下低延时应用最常采用的一种技术协议。为了更好的满足客户在实时通...

阿里云官方博客
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部