Apakah ada cara untuk menyetel indeks terpilih dari RadioGroup di android, selain perulangan melalui tombol radio turunan dan memilih memeriksa tombol radio pada indeks yang dipilih?
Catatan: Saya mengisi Grup Tombol Radio pada waktu proses.
Apakah ada cara untuk menyetel indeks terpilih dari RadioGroup di android, selain perulangan melalui tombol radio turunan dan memilih memeriksa tombol radio pada indeks yang dipilih?
Catatan: Saya mengisi Grup Tombol Radio pada waktu proses.
Jawaban:
Jika grup radio Anda ditentukan dalam file layout xml, setiap tombol dapat diberi id. Kemudian Anda tinggal mencentang tombol seperti ini
radioGroup.check(R.id.myButtonId);
Jika Anda membuat grup radio secara terprogram (saya bahkan tidak yakin bagaimana Anda melakukannya ...), Anda mungkin ingin mempertimbangkan untuk membuat file xml layout khusus hanya untuk grup radio tersebut sehingga Anda dapat menetapkan R.id. * ids ke tombol.
Silakan lihat jawaban di bawah ini jika Anda sebenarnya ingin mengatur kelompok tombol radio menurut indeks, lihat jawaban di bawah.
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
metode tersebut.
Pertanyaan mengatakan "set selected INDEX", berikut cara mengaturnya dengan indeks:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
Info tambahan: Tampaknya Google ingin Anda menggunakan id daripada indeks, karena menggunakan id lebih banyak bukti bug. Misalnya, jika Anda memiliki elemen UI lain di RadioGroup Anda, atau jika pengembang lain memesan ulang RadioButtons, indeks mungkin berubah dan tidak seperti yang Anda harapkan. Tetapi jika Anda satu-satunya pengembang, ini tidak masalah.
Jawaban Siavash benar:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
Namun ketahuilah bahwa radioGroup dapat berisi tampilan selain radioButtons - seperti contoh ini yang menyertakan garis samar di bawah setiap pilihan.
<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>
Dalam hal ini menggunakan indeks 1, misalnya, akan menghasilkan error. Item di indeks 1 adalah baris pemisah pertama - bukan radioButton. RadioButtons dalam contoh ini berada pada indeks 0, 2, 4, 6.
Ini Bekerja Bagi saya, saya membuat tombol radio secara dinamis oleh
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
}
}
Sekarang Periksa tombol menggunakan,
int radio_button_Id = radioGroup.getChildAt(index).getId();
radioGroup.check( radio_button_Id );
Di dalam onBindViewHolder, setel tag ke Grup Tombol
@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
...
holder.ButtonGroup.setTag(position);
}
dan di 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()
}
Menggunakan Kotlin, Anda dapat melakukannya
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
atau
radio_group_id.check(R.id.radio_button_id
)