设置Android组的选定索引
除了在子单选按钮之间循环并选择检查所选索引处的单选按钮外,是否有其他方法可以在android中设置RadioGroup的所选索引设置Android组的选定索引,android,android-radiogroup,android-radiobutton,Android,Android Radiogroup,Android Radiobutton,除了在子单选按钮之间循环并选择检查所选索引处的单选按钮外,是否有其他方法可以在android中设置RadioGroup的所选索引 注意:我在运行时填充单选按钮组。如果您的单选按钮组是在布局xml文件中定义的,则可以为每个按钮分配一个id。然后您只需选中如下按钮 radioGroup.check(R.id.myButtonId); 如果你用编程方式创建你的无线电组,我甚至不知道你是如何做到这一点的……你可能想考虑只为无线电组创建一个特殊的布局XML文件,这样你就可以将R.ID.* ID分配给按钮
注意:我在运行时填充单选按钮组。如果您的单选按钮组是在布局xml文件中定义的,则可以为每个按钮分配一个id。然后您只需选中如下按钮
radioGroup.check(R.id.myButtonId);
如果你用编程方式创建你的无线电组,我甚至不知道你是如何做到这一点的……你可能想考虑只为无线电组创建一个特殊的布局XML文件,这样你就可以将R.ID.* ID分配给按钮。 请参阅下面的答案。如果您实际上希望按索引设置单选按钮组,请参阅下面的答案
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
问题是设置选定的索引,下面是如何按索引设置它:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
附加信息:谷歌似乎希望你使用id而不是索引,因为使用id更能防止错误。例如,如果您的RadioGroup中有另一个UI元素,或者如果另一个开发人员重新订购RadioButton,则索引可能会更改,而不是您所期望的。但是如果你是唯一的开发者,这是完全好的 您可以从广播组进行findViewById
((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
西亚瓦什的回答是正确的:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
但请注意,一个放射组可以包含除单选按钮以外的其他视图,如本例所示,每个选项下都包含一条暗线
<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处的项目是第一个分隔行-不是单选按钮。本例中的单选按钮位于索引0、2、4、6。这对我来说很有效,我通过
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
}
}
在onBindViewHolder内部,将标记设置为按钮组
@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
...
holder.ButtonGroup.setTag(position);
}
在视窗夹中
ButtonGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
...
int id = radioGroup.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) radioGroup.findViewById(id);
int clickedPos = (Integer) radioGroup.getTag();
packageModelList.get(clickedPos).getPoll_quest()
}
使用Kotlin,您可以通过
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
或
radio\u group\u id.checkR.id.radio\u button\u idHi,我用以下代码编程创建了它们:for int I=0;i
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true