Alt radyo düğmeleri arasında döngü yapmak ve seçili dizindeki radyo düğmesini kontrol etmek dışında, bir RadioGroup'un seçilen dizinini android'de ayarlamanın bir yolu var mı?
Not: Radyo Düğmesi Grubunu çalışma zamanında dolduruyorum.
Alt radyo düğmeleri arasında döngü yapmak ve seçili dizindeki radyo düğmesini kontrol etmek dışında, bir RadioGroup'un seçilen dizinini android'de ayarlamanın bir yolu var mı?
Not: Radyo Düğmesi Grubunu çalışma zamanında dolduruyorum.
Yanıtlar:
Radyo grubunuz bir düzen xml dosyasında tanımlanmışsa, her düğmeye bir kimlik atanabilir. Sonra bunun gibi bir düğmeyi kontrol et
radioGroup.check(R.id.myButtonId);
Radyo grubunuzu programlı olarak oluşturduysanız (bunu nasıl yapacağınızdan bile emin değilim ...), R.id. * kimlikleri atayabilmek için yalnızca radyo grubu için özel bir düzen xml dosyası oluşturmayı düşünebilirsiniz. düğmelere.
Aslında, radyo düğmesi grubunu dizine göre ayarlamak istiyorsanız, lütfen aşağıdaki yanıta bakın, aşağıdaki yanıta bakın.
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
yöntemin bağımsız değişkeni olarak kullanabilirsiniz .
Soru "seçili INDEX'i ayarla" dedi, işte onu dizine göre nasıl ayarlayacağınız:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
Ek bilgi: Görünüşe göre Google, dizin yerine kimlik kullanmanızı istiyor, çünkü id kullanmak daha fazla hata kanıtı. Örneğin, RadioGroup'unuzda başka bir UI öğeniz varsa veya başka bir geliştirici RadioButton'ları yeniden sipariş ederse, endeksler değişebilir ve beklediğiniz gibi olmayabilir. Ancak tek geliştirici sizseniz, bu tamamen sorun değil.
Siavash'ın cevabı doğru:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
Ancak bir radioGroup'un radioButtons dışında görünümler içerebileceğini unutmayın - bu örnekte olduğu gibi her seçimin altında soluk bir çizgi bulunur.
<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>
Bu durumda, örneğin 1 indeksinin kullanılması bir hata oluşturacaktır. Dizin 1'deki öğe, bir radioButton değil, ilk ayırıcı çizgidir. Bu örnekteki radioButton'lar 0, 2, 4, 6 dizinlerindedir.
Bu Benim İçin Çalıştı, radyo düğmesini dinamik olarak oluşturdum.
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
}
}
Şimdi kullanarak bir düğmeyi kontrol edin,
int radio_button_Id = radioGroup.getChildAt(index).getId();
radioGroup.check( radio_button_Id );
OnBindViewHolder'ın içinde etiketi Düğme Grubu olarak ayarlayın
@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
...
holder.ButtonGroup.setTag(position);
}
ve ViewHolder'da
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'i kullanarak bunu yapabilirsiniz
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
veya
radio_group_id.check(R.id.radio_button_id
)