设置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 );