Есть ли способ установить выбранный индекс RadioGroup в Android, кроме перебора дочерних радиокнопок и выбора проверки переключателя по выбранному индексу?
Примечание. Я заполняю группу переключателей во время выполнения.
android
android-radiogroup
android-radiobutton
Хасан Мокдад
источник
источник
check
метода.Вопрос сказал "установить выбранный ИНДЕКС", вот как установить его по индексу:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
Дополнительная информация: похоже, Google хочет, чтобы вы использовали идентификатор вместо индекса, потому что использование идентификатора является более надежным доказательством ошибки. Например, если у вас есть другой элемент пользовательского интерфейса в вашей RadioGroup, или если другой разработчик повторно заказывает RadioButtons, индексы могут измениться и не соответствовать вашим ожиданиям. Но если вы единственный разработчик, это нормально.
источник
Ответ Сиаваша правильный:
((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 является первой разделительной линией, а не RadioButton. RadioButton в этом примере имеют индексы 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() }
источник
Используя Kotlin, вы можете сделать это
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
или
radio_group_id.check(R.id.radio_button_id
)источник