एंड्रॉइड में, मैं श्रोता के साथ चयनित स्पिनर मान प्राप्त करने का प्रयास कर रहा हूं।स्पिनर मूल्य कैसे प्राप्त करें?
स्पिनर के मूल्य को प्राप्त करने का सबसे अच्छा तरीका क्या है?
एंड्रॉइड में, मैं श्रोता के साथ चयनित स्पिनर मान प्राप्त करने का प्रयास कर रहा हूं।स्पिनर मूल्य कैसे प्राप्त करें?
स्पिनर के मूल्य को प्राप्त करने का सबसे अच्छा तरीका क्या है?
Spinner mySpinner=(Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
"वैल्यू" यहां बहुत अस्पष्ट है। यह वर्तमान स्पिनर आइटम शीर्षक (जैसे, स्ट्रिंग जो उपयोगकर्ता को प्रदर्शित होता है) को पुनर्प्राप्त करता है, लेकिन उदाहरण के लिए स्पिनर पर एक int सरणी मैप करने पर इसका मूल्य नहीं है। –
@Doge उदाहरण के लिए पूर्णांक मान का मूल्य प्राप्त करने के लिए हमें int [] मानों को बनाना चाहिए और इसे एरेज़.एक्सएमएल से क्रेट फ़ंक्शन पर बनाना चाहिए ताकि हम मानों का उपयोग कर सकें Irray [(int) mySpinner.getSelectedItemId()] पूर्णांक मान प्राप्त करने के लिए –
हां, आप के माध्यम से श्रोता को पंजीकृत कर सकते हैं, जैसा कि here प्रदर्शित किया गया है।
धन्यवाद - यह भी काम करता है, और (मुझे लगता है) यह कोड को पढ़ने में आसान बनाता है। –
स्पिनर एक "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) {
}
});
धन्यवाद - यह काम करता है, हालांकि मुझे विधियों में शून्य रिटर्न प्रकार जोड़ने की आवश्यकता है। –
क्या आइटम की स्थिति पर भरोसा किए बिना इसे हासिल करने का कोई तरीका नहीं है? – Vinz
यदि आप चयन ईवेंट पर भरोसा किए बिना स्पिनर मूल्य को पढ़ना चाहते हैं तो बहुत उपयोगी समाधान नहीं है। – AndroidDev
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();
आप पहले से ही पता आइटम एक String
है, तो मैं पसंद करते हैं:
String itemText = (String) mySpinner.getSelectedItem();
toString()
को Object
पर कॉल करना जो आपको पता है String
एक और जैसा लगता है Object
को String
पर कास्टिंग करने के बजाय राउंडअबाउट पथ।
कहो इस स्पिनर प्रविष्टियों और मूल्यों के साथ अपने 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, यह स्पिनर पर आधिकारिक एंड्रॉइड दस्तावेज़ में होना चाहिए, वे केवल श्रोता के माध्यम से मूल्य प्राप्त करना दिखाते हैं। – visual
यह वही है जो मैं देख रहा हूं –
आपको निश्चित रूप से [डोडो का जवाब] स्वीकार करना चाहिए (http://stackoverflow.com/a/7486969/1747491)। – theblang