如果我在recyclerview中有一个复选框,并且还有一个已检查的更改侦听器来监听其事件,我发现即使我没有检查它们,其他一些查看者也会得到检查!!
是否因为recyclerview重新使用其查看者? 我该如何克服这个问题?
答案 0 :(得分:2)
是的,Recycler视图重用其视图。事实上,这是Recycler视图的主要目的,它允许更快的滚动,因为为视图充气并为每个视图实例调用findViewById
是很昂贵的。
您可以通过手动设置onBindViewHolder
中的所有值来解决此问题。在您的情况下,这意味着调用checkBox.setChecked(false)
将复选框恢复为默认状态。
答案 1 :(得分:1)
您应该在recyclerView中覆盖onViewRecycled函数,然后将复选框checkChangeListener设置为null,将checkedListener设置为false并调用super方法。 为我工作:)