前言
我们知道,当一个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);
后记
哪有什么后记,又不是写小说,我只是来把解决方法记录下来,省的下次跳坑找不到解决方法。如果有帮到你,有空就给个赞或者回复,没空直接右上角我也不介意。(*  ̄3)(ε ̄ *)么么哒。