回收站视图中复选框上的 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 方法。 为我工作:)