首页 > 解决方案 > onBindViewHolder 重复结果

问题描述

我创建了一个RecyclerView Adapter显示项目列表的项目,每个项目旁边都有一个Checkbox.

在我创建的适配器内部:

interface OnItemCheckListener {
    void onItemCheck(DiscoverBooks books);
    void onItemUncheck(DiscoverBooks books);
}

@NonNull
private OnItemCheckListener onItemCheckListener;


@Override
public void onBindViewHolder(BorrowViewHolder holder, int position) {
    holder.bind(items.get(position), position);

    final Discoveritems currentItem = items.get(position);

    holder.setOnClickListener( v -> {
        holder.Cb_Borrow.setChecked( !holder.Cb_Borrow.isChecked());
        if (holder.Cb_Borrow.isChecked()) {
            onItemCheckListener.onItemCheck(currentItem);
        } else {
            onItemCheckListener.onItemUncheck(currentItem);
        }
    } );

}

我在其中为用户提供了检查复选框并稍后使用此数据的选项。

在此处输入图像描述

但是,我发现,例如,如果我单击第一个项目的复选框,它会使每 7 个项目被选中。

例如我得到的:

item 1 - item checked
item 2
item 3
item 4
item 5
item 6
item 7 
item 8 - item checked
item 9
item 10
item 11
item 12
item 13
item 14 
item 15 - item checked

知道为什么会这样吗?

谢谢

标签: javaandroidandroid-recyclerview

解决方案


推荐阅读