Android开发—RadioGroup中RadioButton默认选中问题

前言

我们知道,当一个RadioGroup(其实只要在同一个父布局)中有若干个RadioButton时,RadioButton之间存在着互斥关系,也就是说只能选中一个RadioButton。但是如果我们需要默认选中某个RadioButton该如何处理呢? 
解决方法并不限制RadioButton是动态生成还是xml文件中写死。

我是坑,你一定跳过

当我接到要求默认选中某个RadioButton时,我轻蔑一笑,一个属性轻松解决。于是乎我华丽丽的跳进了下面的坑(相信你也这么跳进来的)。 

我的项目要求我动态生成RadioButton,所以我直接在生成RadioButton时,判断某个条件是否成立,然后选中目标RadioButton。

for (int i = 0; i < 4; i++) {

    //选项点击监听方便举例,我这里只是简单的生成RadioButton
    RadioButton radioButton = new RadioButton(this);
    radioButton.setText(i + "");
    //然后判断是否需要默认选中
    ……
    //开始跳坑
    radioButton.setChecked(true);

    radioGroup.addView(radioButton, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
}

我没有说错吧,相信一上来大家都是通过setChecked这个方法去设置默认选中(如果xml文件中写死RadioButton的哥们,一定是配置属性checked=”true”)。 
但是当我们运行的时候懵逼了,默认是被选中了,但是当我们修改选项的时候,发现这个默认选中的RadioButton竟然不会被取消选中。这就有点斯巴达了。 
有个最容易想到的思路就是我们去遍历所有的RadioButton,然后对你点击的radioButton.setChecked(true),其余的radioButton.setChecked(false)。但是这么勤勉的做法,怠惰的我不愿意这么做啊! 
怠惰怠惰怠惰!!该怎么解决呢?墨迹了这么久,马上出来解决方法。

我是出坑的方法

没有去问谷哥,度娘就找到了一个解决方法。原来需要给每个RadioButton设置一个id(xml定义的RadioButton自然会有,代码生成的可以直接调用radioButton.setId()方法),然后默认选中的时候直接利用RadioGroup的radioGroup.check(RadioButton的id)来选中默认按钮。


for (int i = 0; i < 4; i++) {
    RadioButton radioButton = new RadioButton(this);
    radioButton.setText(i + "");
    //////给每个RadioButton设置Id
    radioButton.setId(i);

    radioGroup.addView(radioButton, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
}
//假如需要默认选中第一个按钮
radioGroup.check(0);

阅读更多
个人分类: android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭