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

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

最近写代码使用到了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 更新结束以后再刷新。android

备注:因为我并无分析RecyclerView 以及这个View的Adapter,因此我不保证个人分析必定是对的,若是有错误,但愿你们在评论中指出来,一块儿研究,但我经过这个分析毕竟解决了这个问题,无论缘由对与不对,能解决问题就行。异步

相关文章
相关标签/搜索