Есть ли способ установить выбранный индекс RadioGroup в android, кроме цикла через дочерние радиокнопки и выбор проверки переключателя по выбранному индексу?
Примечание. Я заполняю группу Radio Button во время выполнения.
Есть ли способ установить выбранный индекс RadioGroup в android, кроме цикла через дочерние радиокнопки и выбор проверки переключателя по выбранному индексу?
Примечание. Я заполняю группу Radio Button во время выполнения.
Если ваша радиогруппа определена в файле макета XML, каждой кнопке может быть присвоен идентификатор. Тогда вы просто проверяете кнопку, подобную этой
radioGroup.check(R.id.myButtonId);
Если вы создали свою радиогруппу программно (я даже не уверен, как вы это делаете...), вы можете рассмотреть вопрос о создании специального XML файла макета только для радиогруппы, чтобы вы могли назначить R.id * идентификаторы кнопок.
См. ответ ниже, если вы действительно хотите установить группу переключателей по индексу, см. ответ ниже.
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
Вопрос: "set selected INDEX", здесь, как установить его по индексу:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
Дополнительная информация: Кажется, Google хочет, чтобы вы использовали идентификатор вместо индекса, потому что использование идентификатора является более надежным. Например, если у вас есть другой элемент пользовательского интерфейса в вашей RadioGroup, или если другой разработчик повторно заказывает RadioButtons, индексы могут измениться и не быть тем, что вы ожидали. Но если вы единственный разработчик, все в порядке.
Ответ на Siavash правильный:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
Но имейте в виду, что radioGroup может содержать представления, отличные от 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 );
Внутри onBindViewHolder установите тег для группы кнопок
@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
   ...
   holder.ButtonGroup.setTag(position);
}
и в ViewHolder
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()
    }