How can I select only one checkbox in Recyclerview and notifydataset changed

前端 未结 5 1158
没有蜡笔的小新
没有蜡笔的小新 2020-12-09 14:14

In my code I have create recyclerview with check box and default one item selected already. now I want when select other item checkbox so deselect all other items mean one i

5条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-09 14:55

    Try this, complete example
    public class ChildAddressAdapter extends RecyclerView.Adapter {

    private Activity context;
    private List addressDetailList;
    private int selectedPosition = -1;
    
    public ChildAddressAdapter(Activity context, List addressDetailList) {
        this.context = context;
        this.addressDetailList = addressDetailList;
    }
    
    @NonNull
    @Override
    public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    
        LayoutInflater inflater = LayoutInflater.from(context);
        View myView = inflater.inflate(R.layout.address_layout, parent, false);
        return new CartViewHolder(myView);
    }
    
    @Override
    public void onBindViewHolder(@NonNull CartViewHolder holder, int position) {
    
        holder.adress_checkbox.setOnClickListener(view -> {
            selectedPosition = holder.getAdapterPosition();
            notifyDataSetChanged();
        });
    
        if (selectedPosition==position){
            holder.adress_checkbox.setChecked(true);
        }
        else {
            holder.adress_checkbox.setChecked(false);
        }
    
    
    }
    
    @Override
    public int getItemCount() {
        return  addressDetailList.size();
    }
    
    class CartViewHolder extends RecyclerView.ViewHolder
    {
        TextView address_text,address_tag;
        CheckBox adress_checkbox;
    
        CartViewHolder(View itemView) {
            super(itemView);
            address_text = itemView.findViewById(R.id.address_text);
            address_tag = itemView.findViewById(R.id.address_tag);
            adress_checkbox = itemView.findViewById(R.id.adress_checkbox);
        }
    }
    

    }

提交回复
热议问题