android - recyclerview 中错误的项目更改

标签 android android-recyclerview

大家好,我陷入了困境,需要帮助:

每个项目都有一个 CheckBox,我在 RecyclerView 中为我的项目的根元素设置了 setOnLongClickListener,如下所示:

    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 ;
        }
    });

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

最佳答案

这是因为当您使用 RecycleView 时,它会在您每次滚动时重用您的 View 。 RecycleView 像这样重用你的资源 enter image description here

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

解决方案

如果您为 checkin 编写任何逻辑 onBindViewHolder 那么您必须将这两个部分用于 true 和 false

if(yourCondition){
   //code if condition is true
}else {
   //code if condition is false
}

其他解决方案

只需使用一条语句即可解决此问题,停止您的 RecycleView 以像这样重用您的 View 状态

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

    holder.setIsRecyclable(false);
    //.................your other code
}

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

关于android - recyclerview 中错误的项目更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029681/

相关文章:

java - 在recyclerview中高效下载和使用图片

android - RecyclerView.Adapter 和 ImageView.getWidth()

android - RecyclerView : Async image-loading

android - setOnDismissListener 我能知道我在 android 中点击了哪个按钮吗

javascript - 仅使用 Javascript 从 android webview 打开 Google map 或新浏览器

java - 如何在android中压缩非常大的SQLite数据库?

java - 在 Recycler Adapter 中获取 Activity onDestroy()

android - 在android应用程序的webview中加载url时启动画面

android - 我们可以在 Android 中使用 wi-fi 热点连接 10 个以上的设备吗

java - 下载完成后如何隐藏微调器(进度条)?