RecycleView + CheckBox实现单选

本文介绍了一种使用Java实现的RecyclerView适配器,用于显示配送方式列表。适配器包括了初始化上下文、数据源、布局填充、视图绑定、默认选中项处理等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class DeliveryMethodAdapter extends RecyclerView.Adapter<DeliveryMethodAdapter.MyViewHolder> {

    private Context context;
    private List<DeliveryModeBean> recordsBeanList;
    private static final String TAG = "DeliveryMethodAdapter";
    private Map<Integer, CheckBox> cbMap = new HashMap<>();
    private int checkedPosition = -1;
    private String deliveryType;

    public DeliveryMethodAdapter(Context context, List<DeliveryModeBean> recordsBeanList, String deliveryType) {
        this.context = context;
        this.recordsBeanList = recordsBeanList;
        this.deliveryType = deliveryType;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_deliverymethod_item, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        final DeliveryModeBean entity = recordsBeanList.get(position);
        String name = entity.getName();
        holder.tv_name.setText(name);

        cbMap.put(position, holder.cb_address_default);

        holder.cb_address_default.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked == true) {
                    clearStatus(position);
                    checkedPosition = position;
                    getCheckedPosition();
                }
            }
        });
        if (deliveryType.equals(entity.getCode())) {
            holder.cb_address_default.setChecked(true);
        }
    }

    private void clearStatus(int position) {
        //遍历map
        Iterator entries = cbMap.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry entry = (Map.Entry) entries.next();
            Integer key = (Integer) entry.getKey();
            CheckBox value = (CheckBox) entry.getValue();
            if (position != key) {
                value.setChecked(false);
            } else {
                value.setChecked(true);
            }
        }
    }

    public int getCheckedPosition() {
        return checkedPosition;
    }

    @Override
    public int getItemCount() {
        return recordsBeanList == null ? 0 : recordsBeanList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tv_name;
        public CheckBox cb_address_default;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv_name = (TextView) itemView.findViewById(R.id.tv_delivery_method);
            cb_address_default = (CheckBox) itemView.findViewById(R.id.cb_delivery_method);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值