如何用代码来实现radioButton选中后在取消呢?

如何用代码来实现radioButton选中后在取消呢?

我现在有两种方法可以实现radioButton的选中与取消,由于我的radioButton是动态生成的,当然静态的radioButton也可以用的。

一、第一种

1、先定义一个Boolean的变量

final boolean[] isselectall = {false};

2、给radioButton定义一个点击事件的,之后直接在方法里面写个判断就可以了

radioButton1.setOnClickListener(new RadioButton.OnClickListener() {

           @Override
            public void onClick(View v) {
                if(isselectall[0]){
                    radioButton.setChecked(false);
                    isselectall[0]=false;
                }else{
                    radioButton.setChecked(true);
                    isselectall[0]=true;
                }
            }
        });

如果二个radioButton以上的时候,用这种方法用户体验会不太好,为什么这么说呢?当点击第一个radioButton的时候, isselectall[0] 的值会设置为true,当点击第二个radioButton的时候,当前 isselectall[0] 的值为true,他会直接到if里面去,也就相当于没有没有设置radioButton,当点击第二次的时候才会设置为true,给人的感觉就是需要点击两次radioButton才会出效果

二、第二种

第二种方式可以说是由第一个方式的演变来的,主要思路就是给每个radioButton添加一个Boolean的变量,用于记录当前radioButton的状态。

1、先定义一个Boolean的变量

final boolean[] isselectall = {false};

2、定义一个Map集合,用于储存每个radioButton的状态

private Map<Integer,Boolean> mapName=new HashMap<>();

3、给集合里面添加数据

mapName.put(“这个键可以自定义,可以直接使用radioButton的id作为键”,false);

4、给radioButton定义一个点击事件的

radioButton1.setOnClickListener(new RadioButton.OnClickListener() {

           @Override
            public void onClick(View v) {
            //获取当前radioButton1的id
            int id =radioButton1.getId();
                if(mapName.get(id)){
                    radioButton1.setChecked(false);
                    isselectall[0]=false;
                }else{
                    radioButton1.setChecked(true);
                    isselectall[0]=true;
                }
                //设置当前radioButton的状态
                if(isselectall[0]){
                 mapName.put(id,true);
                 }else{
                     mapName.put(id,false);
                 }
                
            }
        });

我也是个初学者,有什么不对的地方,希望可以指出来,谢谢!!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值