2011-03-29 22 views
22

उदाहरण के लिए: मेरे पास दिन के साथ एक enum है।एंड्रॉइड स्पिनर को ENUM मान रखें?

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

+1

ध्यान रखें कि एंड्रॉयड पर्यावरण के भीतर enums के उपयोग कम कुशल है। यदि आप प्रदर्शन के साथ अपना कोड बनाना चाहते हैं, तो आपको एंड्रॉइड के प्रदर्शन निर्देशों के अनुसार enums से बचना चाहिए। –

+3

@ लुइस मिगुएल सेरानो, एंड्रॉइड 2.2 से वास्तव में वास्तविक नहीं है। –

+0

कुछ चीजें थीं जिनके बिना मुझे enums के बिना लागू करना मुश्किल हो गया है। – saikek

उत्तर

27

पूर्वाभ्यास के कुछ प्रकार उपयोग कर रहा है:

Spinner mySpinner = (Spinner) findViewById(R.id.cmbClothType); 
mySpinner.setAdapter(new ArrayAdapter<MyType>(this, android.R.layout.simple_list_item, MyType.values())); 
47

एक और जवाब देने के लिए इसी तरह की है, लेकिन आप एक Enum वर्ग के आधार पर भरने के लिए एक ArrayAdapter उपयोग कर सकते हैं। मैं स्पिनर में अधिक मूल्यवान उपयोगकर्ता के अनुकूल मूल्य बनाने के लिए एनम कक्षा में स्ट्रिंग को ओवरराइड करने की अनुशंसा करता हूं। गतिविधि में:

Spinner mySpinner = (Spinner) findViewById(R.id.mySpinnerId); 

mySpinner.setAdapter(new ArrayAdapter<MyEnum>(this, android.R.layout.simple_spinner_item, MyEnum.values())); 

आपका enum वर्ग:

public enum MyEnum{ 
    ENUM1("Enum 1"), 
    ENUM2("Enum 2"); 

    private String friendlyName; 

    private MyEnum(String friendlyName){ 
     this.friendlyName = friendlyName; 
    } 

    @Override public String toString(){ 
     return friendlyName; 
    } 
} 
+0

हालांकि मैं अन्य उत्तर पसंद करता हूं, यह जानना बहुत अच्छा है कि ऐसा कुछ है मुमकिन। +1 – Antiohia

+0

अगर मैं सिस्टम भाषा बदलना चाहता हूं, तो मुझे क्या करना चाहिए? मैं ENUM1 ("Enum 1") की शुरुआत नहीं कर सकता; – Urchin

+0

@ Urchin आप इसे एक stringResId दे सकते हैं ... लेकिन आपको toString के बजाय resId से स्ट्रिंग प्राप्त करने के लिए अपना स्वयं का एडाप्टर बनाना होगा। – SjoerdvGestel

संबंधित मुद्दे