设置Android组的选定索引

设置Android组的选定索引,android,android-radiogroup,android-radiobutton,Android,Android Radiogroup,Android Radiobutton,除了在子单选按钮之间循环并选择检查所选索引处的单选按钮外,是否有其他方法可以在android中设置RadioGroup的所选索引 注意:我在运行时填充单选按钮组。如果您的单选按钮组是在布局xml文件中定义的,则可以为每个按钮分配一个id。然后您只需选中如下按钮 radioGroup.check(R.id.myButtonId); 如果你用编程方式创建你的无线电组,我甚至不知道你是如何做到这一点的……你可能想考虑只为无线电组创建一个特殊的布局XML文件,这样你就可以将R.ID.* ID分配给按钮

除了在子单选按钮之间循环并选择检查所选索引处的单选按钮外,是否有其他方法可以在android中设置RadioGroup的所选索引


注意:我在运行时填充单选按钮组。

如果您的单选按钮组是在布局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 id

Hi,我用以下代码编程创建了它们:for int I=0;i (radio_group_id.getChildAt(index) as RadioButton).isChecked = true