回收站视图中复选框上的 Checkedchange 侦听器
Checkedchange listener on a checkbox in a recyclerview
如果我在 recyclerview 中有一个复选框并且还有一个已检查的更改侦听器来侦听其事件,我发现即使我没有检查它们,其他一些查看器也会得到检查!!
是因为recyclerview 重用了它的viewholders 吗?
我该如何克服这个问题?
是的,recycler 视图重用了它的 viewholder。事实上,这是回收视图的主要目的,它允许更快的滚动,因为膨胀视图并为每个视图实例调用 findViewById
是昂贵的。
您可以通过手动设置 onBindViewHolder
中的所有值来解决这个问题。在您的情况下,这意味着调用 checkBox.setChecked(false)
将复选框恢复为默认状态。
您应该重写recyclerView 中的onViewRecycled 函数并将checkbox checkChangeListener 设置为null,将checked 设置为false 并调用super 方法。
为我工作:)
如果我在 recyclerview 中有一个复选框并且还有一个已检查的更改侦听器来侦听其事件,我发现即使我没有检查它们,其他一些查看器也会得到检查!!
是因为recyclerview 重用了它的viewholders 吗? 我该如何克服这个问题?
是的,recycler 视图重用了它的 viewholder。事实上,这是回收视图的主要目的,它允许更快的滚动,因为膨胀视图并为每个视图实例调用 findViewById
是昂贵的。
您可以通过手动设置 onBindViewHolder
中的所有值来解决这个问题。在您的情况下,这意味着调用 checkBox.setChecked(false)
将复选框恢复为默认状态。
您应该重写recyclerView 中的onViewRecycled 函数并将checkbox checkChangeListener 设置为null,将checked 设置为false 并调用super 方法。 为我工作:)