错误截图:
发生场景:
recycleVIew调用checkbox进行onCheckChange或者onClick的时候进行adpate刷新会出现这个错误
原因:
其中在RecyclerView源码中找到错误日志中提到的assertNotInLayoutOrScroll
方法看一下:
然后在看看isComputingLayout方法,可以看到
通过上面的注释我们知道
当这个方法返回值为true时,RecyclerView会处于锁定状态,这时任何尝试更新Adapter内容的方法都将导致异常,因为RecyclerView在计算layout的时候不允许你更新Adapter内容。
后面它又说,你的代码不太可能处于该状态下运行,因为这个状态只有系统framework调用或者响应系统事件的时候才会发生
最后,它又补充了一句,说如果确实发生了,那有可能是在你设置了View callback的情况下(如focus change callback),这时你需要使用Handler或类似的方法进行延时处理。
解决方法:
reycleView.post(),绘制完后再进行相关处理