Android RadioGroup का चयनित इंडेक्स सेट करें


95

क्या एंड्रॉइड में एक रेडियोग्रुप के चुने हुए इंडेक्स को सेट करने का एक तरीका है, चाइल्ड रेडियोबॉटन के माध्यम से लूपिंग के अलावा और चयनित इंडेक्स पर रेडियो बटन की जांच करना है?

नोट: मैं रेडियो बटन समूह को समय के साथ आबाद कर रहा हूं।

जवाबों:


202

यदि आपका रेडियो समूह एक लेआउट xml फ़ाइल में परिभाषित किया गया है, तो प्रत्येक बटन को एक आईडी सौंपा जा सकता है। फिर आप बस इस तरह से एक बटन की जाँच करें

radioGroup.check(R.id.myButtonId);

यदि आपने अपने रेडियो समूह को प्रोग्रामेटिक रूप से बनाया है (मुझे भी यकीन नहीं है कि आप यह कैसे करते हैं ...), तो आप केवल रेडियो समूह के लिए एक विशेष लेआउट xml फ़ाइल बनाने पर विचार करना चाह सकते हैं ताकि आप R.id। * Ids असाइन कर सकें। बटन के लिए।

कृपया नीचे दिए गए उत्तर को देखें यदि आप वास्तव में, इंडेक्स द्वारा रेडियो बटन समूह सेट करना चाहते हैं, तो नीचे दिए गए उत्तर को देखें।

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

2
नमस्ते, मैंने उन्हें इस कोड का उपयोग करके प्रोग्रामेटिक रूप से बनाया: (int i = 0; i <लुकअपटाइप्स। Size (); i ++) {// RadioButton rbt = new RadioButton (this); //, null, // R.style। RadioGroupItem); RadioButton rbt = (RadioButton) getLayoutInflater ()। Inflate (R.layout.tmpltradiobutton, null); rbt.setId (i); rbt.setText (lookupTypes.get (i) .getValue ()); rbt.setTag (lookupTypes.get (i)); rbtnGroup.addView (rbt); }
हसन मोकद

चूंकि आप अपनी आईडी को लुकअपटाइप्स में इंडेक्स पर सेट कर रहे हैं, इसलिए आप उस इंडेक्स को checkविधि के तर्क के रूप में उपयोग कर सकते हैं ।
jjm

यह उत्तर शाब्दिक रूप से फिर से बताता है कि प्रश्न पूछने वाला पहले से ही क्या कहता है - अन्य उत्तर को स्वीकृत उत्तर होना चाहिए क्योंकि यह सही ढंग से बताता है कि सूचकांक द्वारा कैसे चयन किया जाए।
लस्सी किन्नुनेन

इस जवाब पर upvotes की संख्या जैसे @LassiKinnunen मैं महसूस पता चलता है कि लोगों को हो रही है कि वे क्या इसे से की जरूरत है ... कि कहा, आप कर रहे हैं सही है कि अन्य जवाब पूछा सवाल के लिए और अधिक सही है: - /
JJM

2
ईमानदारी से मुझे थोड़ा शर्मिंदगी महसूस हो रही है कि यह मेरा सबसे ज्यादा वोट देने वाला एसओ जवाब है।
jjm

86

प्रश्न कहा "चयनित INDEX सेट करें", यहां बताया गया है कि इसे इंडेक्स द्वारा कैसे सेट किया जाए:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

........

अतिरिक्त जानकारी: ऐसा लगता है कि Google चाहता है कि आप सूचकांक के बजाय आईडी का उपयोग करें, क्योंकि आईडी का उपयोग करना अधिक बग प्रमाण है। उदाहरण के लिए, यदि आपके पास आपके RadioGroup में कोई अन्य UI तत्व है, या यदि कोई अन्य डेवलपर RadioButtons को फिर से ऑर्डर करता है, तो सूचकांक बदल सकते हैं और आपकी अपेक्षा के अनुरूप नहीं हो सकते हैं। लेकिन अगर आप एकमात्र डेवलपर हैं, तो यह पूरी तरह से ठीक है।


क्या आप इस कोड की व्याख्या कर सकते हैं कि यह सही उत्तर कैसे है?
rfornal

1
@rfornal यह कोड आपको INDEX द्वारा रेडियो बटन को हड़पने की अनुमति देता है, जैसा कि व्यू आईडी (जैसे R.id.radioButton1) द्वारा विरोध किया जाता है, और आईडी देखने के लिए सूचकांक बदलने के लिए लुकअप टेबल को लागू करने की आवश्यकता को कम करता है।
सियावश

5

सियावश का जवाब सही है:

((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 के अनुक्रमित हैं।


3

आप रेडियो समूह से findViewById कर सकते हैं।

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`

1

यह मेरे लिए काम करता है, मैंने रेडियो बटन को गतिशील रूप से बनाया

  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 );

0

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()
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.