क्या एंड्रॉइड में एक रेडियोग्रुप के चुने हुए इंडेक्स को सेट करने का एक तरीका है, चाइल्ड रेडियोबॉटन के माध्यम से लूपिंग के अलावा और चयनित इंडेक्स पर रेडियो बटन की जांच करना है?
नोट: मैं रेडियो बटन समूह को समय के साथ आबाद कर रहा हूं।
क्या एंड्रॉइड में एक रेडियोग्रुप के चुने हुए इंडेक्स को सेट करने का एक तरीका है, चाइल्ड रेडियोबॉटन के माध्यम से लूपिंग के अलावा और चयनित इंडेक्स पर रेडियो बटन की जांच करना है?
नोट: मैं रेडियो बटन समूह को समय के साथ आबाद कर रहा हूं।
जवाबों:
यदि आपका रेडियो समूह एक लेआउट xml फ़ाइल में परिभाषित किया गया है, तो प्रत्येक बटन को एक आईडी सौंपा जा सकता है। फिर आप बस इस तरह से एक बटन की जाँच करें
radioGroup.check(R.id.myButtonId);
यदि आपने अपने रेडियो समूह को प्रोग्रामेटिक रूप से बनाया है (मुझे भी यकीन नहीं है कि आप यह कैसे करते हैं ...), तो आप केवल रेडियो समूह के लिए एक विशेष लेआउट xml फ़ाइल बनाने पर विचार करना चाह सकते हैं ताकि आप R.id। * Ids असाइन कर सकें। बटन के लिए।
कृपया नीचे दिए गए उत्तर को देखें यदि आप वास्तव में, इंडेक्स द्वारा रेडियो बटन समूह सेट करना चाहते हैं, तो नीचे दिए गए उत्तर को देखें।
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
विधि के तर्क के रूप में उपयोग कर सकते हैं ।
प्रश्न कहा "चयनित INDEX सेट करें", यहां बताया गया है कि इसे इंडेक्स द्वारा कैसे सेट किया जाए:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
अतिरिक्त जानकारी: ऐसा लगता है कि Google चाहता है कि आप सूचकांक के बजाय आईडी का उपयोग करें, क्योंकि आईडी का उपयोग करना अधिक बग प्रमाण है। उदाहरण के लिए, यदि आपके पास आपके RadioGroup में कोई अन्य UI तत्व है, या यदि कोई अन्य डेवलपर RadioButtons को फिर से ऑर्डर करता है, तो सूचकांक बदल सकते हैं और आपकी अपेक्षा के अनुरूप नहीं हो सकते हैं। लेकिन अगर आप एकमात्र डेवलपर हैं, तो यह पूरी तरह से ठीक है।
सियावश का जवाब सही है:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
लेकिन ध्यान रखें कि रेडियोग्रुप में रेडियोबटन के अलावा अन्य दृश्य भी हो सकते हैं - जैसे कि यह उदाहरण जिसमें प्रत्येक पसंद के तहत एक बेहोश लाइन शामिल है।
<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 के अनुक्रमित हैं।
यह मेरे लिए काम करता है, मैंने रेडियो बटन को गतिशील रूप से बनाया
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()
}