大家好,我陷入了困境,需要帮助:
每个项目都有一个 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
像这样重用你的资源
因此,当您滚动时,它会显示错误的 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/