多个互相有联系的checkbox的单选逻辑

本文介绍了如何通过简单的代码逻辑实现在Android应用中创建互斥的Checkbox,即一次只能选择一个的状态。通过设置按钮属性并利用XML文件中的不同背景图,能够有效地减少代码量,并保持界面美观。

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

checkbox单选的状态逻辑,状态好的时候一下就写好了,状态不好的时候要调试比较久,当然主要是对其中的事件不太清楚。

  先给出效果图吧。

 

  

  然后给出代码,

  

selectZhiFuBaoPay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (selectWeiXinPay.isChecked()){
                    if (selectZhiFuBaoPay.isChecked()){
                        selectWeiXinPay.setChecked(false);
                        PAY_MODE = ALIPAY;
                    } else{
                        PAY_MODE = TENPAY;
                    }
                } else{
                    if (selectZhiFuBaoPay.isChecked()){
                        PAY_MODE = ALIPAY;
                    } else{
                        PAY_MODE = "";
                    }
                }
                
            }
        });

        selectWeiXinPay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (selectZhiFuBaoPay.isChecked()){
                    if (selectWeiXinPay.isChecked()){
                        selectZhiFuBaoPay.setChecked(false);
                        PAY_MODE = TENPAY;
                    } else{
                        PAY_MODE = ALIPAY;
                    }
                } else{
                    if (selectWeiXinPay.isChecked()){
                        PAY_MODE = TENPAY;
                    } else{
                        PAY_MODE = "";
                    }
                }
            }
        });

  checkbox的图片效果变换事件我们放在XML文件里面了,主要是一个button 属性的设置,在drawable里面分别设置点击和未点击的背景图就OK了,这样可以减少代码的判断。

  从debug的结果来,在响应点击事件前,checkbox的check状态首先已经改变了,然后再去执行onClick里面的事件,然后在onClick里面执行setChecked并不会又执行OnClick里面的事件,就是不会执行我们自己写的代码的逻辑。

  这个是互不干连的两个checkbox要建立单选关系,如果是listview里面的checkbox要建立单选关系,考虑用数组列表储存状态信息,每次执行的时候判断里面的状态信息只有一个为true就可以了。

  

转载于:https://www.cnblogs.com/likeshu/p/4960166.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值