Android CheckBox实现单选按钮效果

使用场景:商品下单时候,选择优惠券——>拉出可用优惠券列表,然后选择优惠券,每次仅可以使用一张,所以用CheckBox实现了radioButton的功能。



/**
 * Created by Administrator on 2019/4/24.
 */

public class SelectCouponAdapter extends RecyclerView.Adapter {
    private List<CouponResponse.DateBean> arrayList;
    private Context context;

    private List<Boolean> list = new ArrayList<>();
    public Map<Integer, Boolean> booleanMap = new HashMap<>();
    private int checkedPosition;
    private boolean onBind;

    private SelectCouponItemListener itemListener;

    public SelectCouponAdapter(Context context, List<CouponResponse.DateBean> arrayList) {
        this.context = context;
        this.arrayList = arrayList;

        notifyDataSetChanged();

    }

    public void setItemListener(SelectCouponItemListener itemListener) {
        this.itemListener = itemListener;
    }

    public void Updata(List<CouponResponse.DateBean> arrayList) {
        this.arrayList = arrayList;
        notifyDataSetChanged();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_select_coupon, parent, false);
        return new SelectCouponViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        SelectCouponViewHolder viewHolder = (SelectCouponViewHolder) holder;
        viewHolder.fillUIWithPosition(position);

    }

    @Override
    public int getItemCount() {
        return arrayList.size();
    }

    public class SelectCouponViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.CouponMoneyTextView)
        TextView CouponMoneyTextView;
        @BindView(R.id.CouponNameTextView)
        TextView CouponNameTextView;
        @BindView(R.id.CouponDateStartTextView)
        TextView CouponDateStartTextView;
        @BindView(R.id.CouponDateEndTextView)
        TextView CouponDateEndTextView;
        @BindView(R.id.couponRadioButton)
        CheckBox couponRadioButton;


        public SelectCouponViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);


        }

        public void fillUIWithPosition(final int position) {
            CouponMoneyTextView.setText(String.valueOf(arrayList.get(position).getCouponAmount()));
            CouponNameTextView.setText(arrayList.get(position).getCouponName());
            CouponDateStartTextView.setText(arrayList.get(position).getCouponValidityStartTime() + "-");
            CouponDateEndTextView.setText(arrayList.get(position).getCouponValidityEndTime());


            couponRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked == true) {
                        booleanMap.clear();
                        booleanMap.put(position, true);
                        checkedPosition = position;

                        if (itemListener != null) {
                            itemListener.selectCouponWithPosition(position, arrayList.get(position).getCouponAmount(), arrayList.get(position).getCouponId());

                        }
                    } else {
                        booleanMap.remove(position);
                        if (booleanMap.size() == 0) {
                            checkedPosition = -1; //-1 代表一个都未选择
                            itemListener.selectCouponWithPosition(position,0 ,-1);


                        }
                    }
                    if (!onBind) {
                        notifyDataSetChanged();
                    }
                }
            });
            onBind = true;
            if (booleanMap != null && booleanMap.containsKey(position)) {
                couponRadioButton.setChecked(true);
            } else {
                couponRadioButton.setChecked(false);
            }
            onBind = false;


        }
    }

    //得到当前选中的位置
    public int getCheckedPosition() {
        return checkedPosition;
    }

    public interface SelectCouponItemListener {
        void selectCouponWithPosition(int position,double OrderCouponPrice, int OrderCouponId);

    }

  

}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值