设置Android RadioGroup的选定索引
有没有一种方法可以在android中设置RadioGroup的选定索引,而不是循环遍历子单选button并select检查所选索引处的单选button?
注意:我在运行时填充单选button组。
如果您的收音机组是在布局xml文件中定义的,则可以为每个button分配一个ID。 然后你只需要检查一个这样的button
radioGroup.check(R.id.myButtonId);
如果你以编程的方式创build了你的收音机组(我甚至不知道你是怎么做的…),你可能要考虑创build一个特殊的布局xml文件,只为收音机组,这样你就可以分配R.id. * id到button。
如果你正在寻找按索引设置单选button组,请看下面的答案,见下面的答案。
问题说“设置select的INDEX”,这里是如何设置索引:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
……..
附加信息:Google似乎希望你使用id而不是索引,因为使用id更有缺陷。 例如,如果在RadioGroup中有另一个UI元素,或者另一个开发人员重新排列了RadioButton,那么索引可能会变化,而不是您所期望的。 但是如果你是唯一的开发者,这是完全没问题的。
Siavash的回答是正确的:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
但是请注意,RadioGroup可以包含radioButton之外的其他视图,就像这个例子,在每个选项下都包含一条淡淡的线条。
<RadioGroup android:id="@+id/radioKb" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/kb1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:button="@null" android:drawableRight="@android:drawable/btn_radio" android:text="Onscreen - ABC" /> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#33000000" /> <RadioButton android:id="@+id/kb2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:button="@null" android:drawableRight="@android:drawable/btn_radio" android:text="Onscreen - Qwerty" /> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#33000000" /> <RadioButton android:id="@+id/kb3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:button="@null" android:drawableRight="@android:drawable/btn_radio" android:text="Standard softkey" /> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#33000000" /> <RadioButton android:id="@+id/kb4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:button="@null" android:drawableRight="@android:drawable/btn_radio" android:text="Physical keyboard" /> <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#33000000" /> </RadioGroup>
例如,在这种情况下,使用索引1会产生错误。 索引1处的项目是第一个分隔线 – 不是radioButton。 本例中的radioButton在索引0,2,4,6处。
你可以从radio组中获得findViewById。
((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
这工作对我来说,我dynamic地创build了单选button
private void createRadioButton() { RadioButton[] rb = new RadioButton[5]; RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f); radioGroup.setOrientation(RadioGroup.HORIZONTAL); for (int ID = 0; ID < 5; ID++) { rb[ID] = new RadioButton(this); rb[ID].setLayoutParams(layoutParams); rb[ID].setText("Button_Text"); radioGroup.addView(rb[ID]); //the RadioButtons are added to the radioGroup instead of the layout } }
现在检查button使用,
int radio_button_Id = radioGroup.getChildAt(index).getId(); radioGroup.check( radio_button_Id );