Android में RadioGroup का चयनित सूचकांक कैसे प्राप्त करें


213

क्या एंड्रॉइड में एक रेडियोग्रुप के चयनित इंडेक्स को प्राप्त करने का एक आसान तरीका है या क्या मुझे बदलावों को सुनने के लिए और पिछले इंडेक्स को चुने हुए कुछ रखने के लिए OnCheckedChangeListener का उपयोग करना है?

उदाहरण xml:

<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
    <RadioButton android:id="@+id/radio1" android:text="option 1" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio2" android:text="option 2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio3" android:text="option 3" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio4" android:text="option 4" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio5" android:text="option 5" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RadioGroup>

यदि कोई उपयोगकर्ता चयन करता है तो option 3मैं सूचकांक प्राप्त करना चाहता हूं, 2।

जवाबों:


479

आपको ऐसा कुछ करने में सक्षम होना चाहिए:

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

यदि RadioGroupअन्य दृश्य (जैसे TextView) शामिल हैं, तो indexOfChild()विधि गलत सूचकांक लौटाएगी।

निम्नलिखित पर चयनित RadioButtonपाठ प्राप्त करने के लिए RadioGroup:

 RadioButton r = (RadioButton) radioButtonGroup.getChildAt(idx);
 String selectedtext = r.getText().toString();

11
लेकिन क्या होगा अगर उन बटनों में उनकी android:idविशेषताएं निर्धारित नहीं हैं ?
8

@BP में रेडियो बटन एक्सेस करने में एक ही संदेह है जब माता-पिता या रेडियो बटन आईडी में से कोई भी सेट नहीं है।
किलर

2
@neuront जब तक आप RadioGroup.findViewById (RadioButtonID) करते हैं, यह काम करेगा। RadioGroup 1, 2, 3, 4 और इतने पर व्यू की आईडी सेट करता है, इसलिए यदि आप इसे संदर्भ में
खोजते हैं

यह काम नहीं कर रहा है यदि डिफॉल्ट (और उपयोगकर्ता द्वारा अछूता) रेडियोबटन को व्यवस्थित किया जाता है।
निंजा कोडिंग

2
@NinjaCoding यदि आपने मेरे समान ही गलती की है, तो आपको RadioGroup.check (चयनितRadioButton.id) पर कॉल करके डिफ़ॉल्ट (प्रारंभिक) रेडियो बटन सेट करना होगा, न कि RadioButton.setChecked (true)।
लेंसफ्लेर

108

यह काम करना चाहिए,

int index = myRadioGroup.indexOfChild(findViewById(myRadioGroup.getCheckedRadioButtonId()));

5
यदि आप Fragment में उपयोग कर रहे हैं, तो getActivity () का उपयोग करें। FindViewById () का उपयोग करें।
संजीत एक

56

आपके पास रेडियो समूह का संदर्भ हो सकता है और getCheckedRadioButtonId ()चेक किए गए रेडियो बटन आईडी प्राप्त करने के लिए उपयोग कर सकते हैं। यहाँ एक नज़र रखना

RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radio_group);

फिर जब आपको चयनित रेडियो विकल्प प्राप्त करने की आवश्यकता होती है।

int checkedRadioButtonId = radioGroup.getCheckedRadioButtonId();
if (checkedRadioButtonId == -1) {
    // No item selected
}
else{
    if (checkedRadioButtonId == R.id.radio_button1) {
        // Do something with the button
    }
}

हां, यह चेक किए गए रेडियो बटन की आईडी है, लेकिन रेडियो समूह में रेडियो बटन के सूचकांक के बारे में क्या?
जॉन बोकर

मैं आईडी प्राप्त कर सकता हूं, मुझे सूचकांक चाहिए, वे अलग हैं।
जॉन बोकर

इंडेक्स का क्या मतलब है? क्या यह एक सूची दृश्य में है?
स्टीफन बॉसबली

अगर मेरे पास रेडियोग्राफ़ में 5 रेडियोबॉटन हैं, और उपयोगकर्ता उस 3 को चुनता है जिसे मैं 2 प्राप्त करना चाहता हूं, तो रेडियोग्राफ़ में चयनित रेडियोबूटन का सूचकांक। यह एक सूची नहीं है।
जॉन बोकर

बस स्पष्ट करने के लिए कि क्या उपयोगकर्ता उस 3 बटन का चयन करता है जिसे आप दूसरा प्राप्त करना चाहते हैं? रेडियो समूहों और बटन में अनुक्रमित नहीं होते हैं।
स्टीफन बॉसबली

27

इसे इस्तेमाल करे

        RadioGroup  group= (RadioGroup) getView().findViewById(R.id.radioGroup);
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                View radioButton = radioGroup.findViewById(i);
                int index = radioGroup.indexOfChild(radioButton);
            }
        });

यह काम है! लेकिन मुझे समझ नहीं आ रहा है कि हमें इस "रेडियोबटन" दृश्य का उपयोग करने की आवश्यकता क्यों है ..
एलेक्स्स



6

// चयनित आइटम की आईडी प्राप्त करने के लिए उपयोग करें

int selectedID = myRadioGroup.getCheckedRadioButtonId();

// चयनित आइटम का दृश्य प्राप्त करें

View selectedView = (View)findViewById( selectedID);

6

इस तरह से इसने मेरे लिए पूरी तरह से काम किया:

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
    int radioButtonID = radioGroup.getCheckedRadioButtonId();
    RadioButton radioButton = (RadioButton) radioGroup.findViewById(radioButtonID);
    String selectedtext = (String) radioButton.getText();

5

उदाहरण के लिए, आपको सबसे पहले अपने RadioButton में मान सेट करने की आवश्यकता है:

RadioButton radioButton = (RadioButton)findViewById(R.id.radioButton);      
radioButton.setId(1);        //some int value

और फिर जब भी इस स्पेसिफिक रेडियोबटन को चुना जाएगा, तो आप इसके द्वारा दिए गए आईडी द्वारा इसके मूल्य को खींच सकते हैं

RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radioGroup);                     
int whichIndex = radioGroup.getCheckedRadioButtonId(); //of course the radioButton
                                                       //should be inside the "radioGroup"
                                                       //in the XML

चीयर्स!


5
radioSexGroup=(RadioGroup)findViewById(R.id.radioGroup);

  btnDisplay=(Button)findViewById(R.id.button);

  btnDisplay.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        int selectedId=radioSexGroup.getCheckedRadioButtonId();
        radioSexButton=(RadioButton)findViewById(selectedId);
        Toast.makeText(MainActivity.this,radioSexButton.getText(),Toast.LENGTH_SHORT).show();
     }
  });


2

बस इसका उपयोग करें:

    int index = 2;
    boolean option3Checked = radioGroup.getCheckedRadioButtonId() == radioGroup.getChildAt(2).getId();

1

तुम कर सकते हो

findViewById

रेडियो समूह से।

यहाँ यह नमूना है:

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

1

आप बस कर सकते हैं

रेडियो समूह और एक रेडियो बटन onecreate विधि से बाहर निकलें

private RadioGroup GrupName;
private RadioButton NameButton;

ऑनक्रैट विधि में व्यू आईडी को शुरू करें

GrupName = (RadioGroup) findViewById(R.id.radioGroupid);

का उपयोग करके चयनित रेडियोबॉटन आईडी को लें

int id = GroupName.getCheckedRadioButtonId();

बटन-किए गए दृश्य से मिलान करने के लिए आईडी का उपयोग करें

NameButton = (RadioButton) findViewById(id);

-फिर रेडियो बटन का मान प्राप्त करें

String valueExpected = NameButton.getText().toString();

--- पुनश्च: यदि आप एक अंतर चाहते हैं, तो आप इसे कास्ट कर सकते हैं

int valueExpectedIn = Integer.parseInt(valueExpected);

1

यदि आपके समूह में TextView या कोई गैर-रेडियोबटन शामिल है , तो भी सही स्थिति प्राप्त करने के लिए यहां कोटलिन एक्सटेंशन दिया गया है

fun RadioGroup.getCheckedRadioButtonPosition(): Int {
    val radioButtonId = checkedRadioButtonId
    return children.filter { it is RadioButton }
        .mapIndexed { index: Int, view: View ->
            index to view
        }.firstOrNull {
            it.second.id == radioButtonId
        }?.first ?: -1
}


0
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
btnDisplay = (Button) findViewById(R.id.btnDisplay);
btnDisplay.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // get selected radio button from radioGroup
            int selectedId = radioSexGroup.getCheckedRadioButtonId();
            // find the radiobutton by returned id
            radioSexButton = (RadioButton) findViewById(selectedId);
Toast.makeText(MainActivity.this,radioSexButton.getText(),Toast.LENGTH_SHORT).show();
        }
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.