स्पिनर मूल्य कैसे प्राप्त करें?


263

Android में, मैं श्रोता के साथ चयनित स्पिनर मान प्राप्त करने का प्रयास कर रहा हूं।

स्पिनर का मूल्य प्राप्त करने का सबसे अच्छा तरीका क्या है?

जवाबों:


571
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();

11
"मान" यहाँ बहुत अस्पष्ट है। यह वर्तमान स्पिनर आइटम शीर्षक (जैसा कि, उपयोगकर्ता को प्रदर्शित की गई स्ट्रिंग) को पुनः प्राप्त करता है, लेकिन यदि आप उदाहरण के लिए स्पिनर पर एक इंट सरणी मैप करते हैं तो इसका मूल्य नहीं है।
ए। स्टीनबर्गेन

1
उदाहरण के लिए पूर्णांक मान जैसे चयनित आइटम का मान प्राप्त करने के लिए @ देखें। हमें int [] मान बनाना चाहिए और इसे onCreate फ़ंक्शन में फ़ाइल करें शायद arrays.xml से ताकि हम मानों का उपयोग कर सकें।
बेलाल मज़्लॉम

128

स्पिनर को "OnItemSelected" ईवेंट को आग लगाना चाहिए जब कुछ चुना जाता है:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        Object item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

धन्यवाद - वह काम किया, हालांकि मुझे विधियों में शून्य वापसी प्रकार जोड़ने की आवश्यकता थी।
सैम डटन

6
क्या वास्तव में आइटम की स्थिति पर भरोसा किए बिना इसे प्राप्त करने का कोई तरीका नहीं है?
विंज़

7
एक बहुत उपयोगी समाधान नहीं है यदि आप एक चयन घटना पर भरोसा किए बिना स्पिनर मूल्य को पढ़ना चाहते हैं।
AndroidDev

3
@Patrick एनोटेशन ओवरराइड की आवश्यकता कभी नहीं होती है यह केवल संकलक को बताता है "क्या आप जांच सकते हैं कि क्या यह ओवरराइड सही ढंग से किया गया है?"
19X को SiXoS

1
जब कोई परिवर्तन उस पर नहीं किया जाता है तो डिफ़ॉल्ट चयनित आइटम प्राप्त करने के बारे में क्या? @ डोडो का सबसे उचित है।
Xtreme बाइकर

49

यह कहें कि यह आपकी xml स्पिनर प्रविष्टियाँ (जैसे। शीर्षक) और मूल्य हैं:

<resources>
    <string-array name="size_entries">
        <item>Small</item>
        <item>Medium</item>
        <item>Large</item>
    </string-array>

    <string-array name="size_values">
        <item>12</item>
        <item>16</item>
        <item>20</item>
    </string-array>
</resources>

और यह आपका स्पिनर है:

<Spinner
    android:id="@+id/size_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/size_entries" />

फिर प्रविष्टियाँ प्राप्त करने के लिए अपने कोड में:

Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large

और मान प्राप्त करने के लिए:

int spinner_pos = spinner.getSelectedItemPosition();
String[] size_values = getResources().getStringArray(R.array.size_values);
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20

Thx, यह स्पिनर पर आधिकारिक ANDR डॉक्टर में होना चाहिए, उन्होंने केवल श्रोता के माध्यम से मान प्राप्त किया।
दृश्य

यह ठीक वही है
जिसकी

सही समाधान! android:entriesमेरा दिन बना दिया।
कोडरपीसी

15

हाँ, आप एक श्रोता के माध्यम से पंजीकृत कर सकते हैं setOnItemSelectedListener(), जैसा कि यहाँ दिखाया गया है


धन्यवाद - यह भी काम किया, और (मुझे लगता है) यह कोड को पढ़ने में आसान बनाता है।
सैम डटन

14
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();

12

यदि आप पहले से ही जानते हैं कि आइटम एक है String, मुझे पसंद है:

String itemText = (String) mySpinner.getSelectedItem();

उस toString()पर कॉल करना Objectजिसे आप जानते हैं कि Stringसिर्फ कास्टिंग Objectकरने से ज्यादा एक गोल चक्कर रास्ता है String


2

स्पिनर संदर्भ में setOnItemSelectedListener जोड़ें और उस तरह डेटा प्राप्त करें

 mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            selectedSize=adapterView.getItemAtPosition(position).toString();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.