Jeśli grupa radiowa jest zdefiniowana w pliku xml układu, do każdego przycisku można przypisać identyfikator. Następnie po prostu zaznacz taki przycisk
radioGroup.check(R.id.myButtonId);
Jeśli utworzyłeś swoją grupę radiową programowo (nie jestem nawet pewien, jak to zrobisz ...), możesz rozważyć utworzenie specjalnego pliku xml układu tylko dla grupy radiowej, aby można było przypisać R.id. * ids do przycisków.
Zobacz odpowiedź poniżej, jeśli faktycznie chcesz ustawić grupę przycisków opcji według indeksu, zobacz odpowiedź poniżej.
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
metody.Pytanie brzmiało „ustaw wybrany INDEKS”, oto jak ustawić go według indeksu:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
Dodatkowe informacje: Wygląda na to, że Google chce, abyś używał identyfikatora zamiast indeksu, ponieważ użycie identyfikatora jest bardziej odporne na błędy. Na przykład, jeśli masz inny element interfejsu użytkownika w swojej RadioGroup lub jeśli inny programista ponownie zamawia RadioButtons, indeksy mogą się zmienić i nie być zgodne z oczekiwaniami. Ale jeśli jesteś jedynym programistą, to jest w porządku.
źródło
Odpowiedź Siavasha jest prawidłowa:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
Należy jednak pamiętać, że grupa radioGroup może zawierać widoki inne niż radioButtons - tak jak w tym przykładzie, który zawiera słabą linię pod każdym wyborem.
<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>
W takim przypadku użycie indeksu na przykład 1 spowodowałoby błąd. Element pod indeksem 1 to pierwsza linia separatora - nie jest to radioButton. RadioButtons w tym przykładzie mają indeksy 0, 2, 4, 6.
źródło
możesz znaleźćViewById z grupy radiowej.
((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
źródło
To zadziałało dla mnie, utworzyłem przycisk opcji dynamicznie przez
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 } }
Teraz sprawdź przycisk za pomocą,
int radio_button_Id = radioGroup.getChildAt(index).getId(); radioGroup.check( radio_button_Id );
źródło
Wewnątrz onBindViewHolder ustaw tag na Button Group
@Override public void onBindViewHolder(final CustomViewHolder holder, final int position) { ... holder.ButtonGroup.setTag(position); }
i w 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() }
źródło
Używając Kotlina możesz to zrobić
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
lub
radio_group_id.check(R.id.radio_button_id
)źródło