刷新界面

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

半腔热情 提交于 2020-04-07 07:32:45
关于 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类排队