java.lang.IllegalArgumentException: Called attach on a child which is not detached: ViewHolder

问题:Called attach on a child which is not detached: ViewHolder#出现问题的原因

经过google后发现,出现该问题的原因是由于recyclerView自带动画,当动画结束的时候,recyclerView会再次回收item,我们也因此可以重用item,而恰恰的是,我们在动画还没结束的时候,就视图重用item,结果就GG了。一下是谷歌的结果:[图片上传中。。。(1)]
相关链接#11

解决方法

我们可以把recyclerView的默认动画关了,两种解决方案:

  • 重写ItemAnimator并对RecyclerView进行设置
  • 设置ItemAnimator的动画时间

我选择了第二种

//mBinding.recyclerView.getItemAnimator().setAddDuration(0);
//mBinding.recyclerView.getItemAnimator().setChangeDuration(0);
//mBinding.recyclerView.getItemAnimator().setMoveDuration(0);
//mBinding.recyclerView.getItemAnimator().setRemoveDuration(0);
((SimpleItemAnimator) mBinding.recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);

结论

Fix it!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容