Установить выбранный индекс Радиогруппы Android

есть ли способ установить выбранный индекс Радиогруппы в android, кроме цикла через дочерние радиобутоны и выбора проверки переключателя в выбранном индексе?

Примечание: я заполняю группу переключателей во время выполнения.

5 ответов


Если ваша радиогруппа определена в xml-файле макета, каждой кнопке может быть присвоен идентификатор. Тогда вы просто проверить кнопку, как это

radioGroup.check(R.id.myButtonId);

Если вы создали свою радиогруппу программно (я даже не уверен, как вы это делаете...), вы можете рассмотреть возможность создания специального XML-файла макета только для группы радио, чтобы вы могли назначить R. id.* идентификаторы к кнопкам.

пожалуйста, смотрите ответ ниже, если вы, на самом деле, хотите установить группу переключателей индекс, см. ответ ниже.


вопрос сказал "установить выбранный индекс", вот как установить его по индексу:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

........

дополнительная информация: похоже, Google хочет, чтобы вы использовали id вместо индекса, потому что использование id является более доказательством ошибок. Например, если у вас есть другой элемент пользовательского интерфейса в вашей Радиогруппе или если другой разработчик повторно заказывает Радиобутоны, индексы могут измениться и не быть такими, как вы ожидали. Но если вы единственный разработчик, это совершенно нормально.


Сиявушом правильно:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

но имейте в виду, что радиогруппа может содержать представления, отличные от radioButtons-как в этом примере, который включает слабую линию под каждым выбором.

<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.


вы можете сделать findViewById из группы Радио .

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`

это сработало для меня, я создал переключатель динамически по

  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
    }
}

теперь проверьте кнопку с помощью,

int radio_button_Id = radioGroup.getChildAt(index).getId();

radioGroup.check( radio_button_Id );