recyclerview中的项目更改错误

2 android android-recyclerview

大家好,我被困在这里需要帮助:

每个项目都有一个CheckBox和我setOnLongClickListener为我的项目的根元素设置RecyclerView如下:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果我向下滚动,当我长按其中一个项目时,CheckBox会检查错误的项目!

小智 8

这是因为当您使用RecycleView它时,每次滚动时都会重复使用您的视图.RecycleView像这样重用你的资源 在此输入图像描述

因此,当您滚动它时,您的视图显示错误状态

如果您为登记编写任何逻辑,onBindViewHolder则必须同时使用true和false

if(yourCondition){
   //code if condition is true
}else {
   //code if condition is false
}
Run Code Online (Sandbox Code Playgroud)

其他方案

只需使用一个语句就可以解决它,以阻止您RecycleView重复使用这样的视图状态

@Override
public void onBindViewHolder(ReqNotificationAdapter.MyViewHolder holder, int position) {

    holder.setIsRecyclable(false);
    //.................your other code
}
Run Code Online (Sandbox Code Playgroud)

我用它来解决我的问题..希望它能解决你的问题,如果你没有问题停止回收你的目的.