我有一个RecyclerView,我想创建类似下面的图像
简而言之:当我激活另一个列表时,我想禁用已选中复选框。
这是我的RecyclerView适配器:
@Override
public void onBindViewHolder(final MyHolder holder, final int position) {
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
/*Here I want to disable this on. I need to have a single enabled checkbox.*/
//((CheckBox) holder.itemView.findViewById( )).setChecked(false);
}
});
}
因为我可以禁用CheckBox选中此功能。 对不起我的英文......
答案 0 :(得分:1)
在coustructor方法中添加这个int变量:
int currentCheckedPosition = -1 ; // hold checked position
在OnBindView()中执行此操作:
@Override
public void onBindViewHolder(final MyHolder holder, final int position) {
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
currentCheckedPosition = holder.getAdapterPosition();
holder.checkbox.setChecked(b);
} else {
currentCheckedPosition = - 1 ;
}
notifyDataSetChanged();
}
});
holder.checkBox.setChecked(position == currentCheckedPosition);
}
答案 1 :(得分:0)
不是最优雅的解决方案,但您可以为整个适配器创建一个名为currentChecked的CompoundButton变量。当触发onCheckedChange时,请调用
currentlyChecked.setChecked(false);
希望这有帮助