मेरे पास एंड्रॉइड Spinner
है और जब उपयोगकर्ता अपने पॉपअप संवाद से कुछ चुनता है तो मैं कॉलबैक प्राप्त करना चाहता हूं। ऐसा लगता है कि setOnItemClickListener()
या setOnItemSelectedListener()
उपयोग करने का सही तरीका होगा, लेकिन जब मैं स्पिनर में से किसी एक आइटम का चयन करता हूं तो न तो इनकार किया जाता है।स्पिनर पॉपअप संवाद को खारिज करते समय कॉलबैक कैसे प्राप्त करें?
क्या ऐसा करने का कोई सही तरीका है? उपयोग setOnItemSelectedListener()
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(new ArrayAdapter<SettingValue>(getContext(), android.R.layout.simple_list_item_1, android.R.id.text1, setting.getSettingValues()));
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("BOOGA");
final SettingValue settingValue = (SettingValue)parent.getSelectedItem();
final Editor edit = getContext().getSharedPreferences(PREFS_CONTEXT_NAME, Context.MODE_PRIVATE).edit();
edit.putString(setting.name(), settingValue.name());
edit.commit();
}
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
उस कोड के लिए धन्यवाद, कॉमन्सवेयर। मैंने कोशिश की और यह मेरे लिए काम नहीं कर रहा है। 'OnItem चयनित()' श्रोता को किसी कारण से कभी नहीं बुलाया जा रहा है। ऊपर मेरा अपडेट देखें। कोई विचार? – emmby
आप मेरे कोड का उपयोग नहीं कर रहे हैं। यदि आप दोनों की तुलना करते हैं, तो आप देखेंगे कि आप अपने ArrayAdapter कन्स्ट्रक्टर के दूसरे पैरामीटर में स्पिनर संसाधन का उपयोग नहीं कर रहे हैं, और आप उस एडाप्टर को ड्रॉप-डाउन संसाधन की आपूर्ति नहीं कर रहे हैं। उन दो चीजों को ठीक करें और देखें कि क्या यह आपकी समस्या को साफ़ करता है या नहीं। यदि नहीं, तो अन्य मतभेदों की तलाश करें। – CommonsWare
यह बहुत उपयोगी कोड है लेकिन इसमें उस मामले को शामिल नहीं किया गया है जहां उपयोगकर्ता स्पिनर को छोड़ देता है (यानी स्पिनर के बाहर इसे बंद करने के लिए स्पर्श करता है)। देशी स्पिनर कोड में एक प्रमुख दोष है - पॉपअप या संवाद के खुले या बंद होने के लिए कोई श्रोता या कॉलबैक ईवेंट नहीं हैं। उदाहरण के लिए, पॉपअप के आधार पर स्पिनर हेडर को खोलना या बंद करना (शायद एक तीर या कुछ बदलना) असंभव प्रतीत होता है। – Batdude