如何更改RecyclerView中的一个元素

时间:2016-07-01 19:14:08

标签: android android-recyclerview adapter

我有一个RecyclerView,我想创建类似下面的图像

简而言之:当我激活另一个列表时,我想禁用已选中复选框。

enter image description here

这是我的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选中此功能。 对不起我的英文......

2 个答案:

答案 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);

希望这有帮助