2011-03-29 69 views
22

例如:我有一個枚舉與天。將ENUM值放到android微調器中?

我如何將它的值放入微調器?

+1

請記住,枚舉了Android環境中的使用效率不高。如果你想讓自己的代碼在性能上有所作爲,你應該根據Android的性能指示避免枚舉。 – 2011-03-29 08:14:46

+3

@Luis米格爾塞拉諾,從android 2.2不是真的。 – 2011-03-29 08:16:39

+0

有些事情,我發現很難實施沒有枚舉。 – saikek 2011-03-29 08:30:08

回答

27

某種類型的演練中使用:

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

到另一個答案相似,但你可以使用一個ArrayAdapter基於枚舉類來填充。我會建議在Enum類中重寫toString,以使微調器中的值更加用戶友好。 在活動:

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

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

你枚舉類:

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 2014-06-30 12:14:06

+0

如果我想更改系統語言,我應該怎麼做?我不能初始化像ENUM1(「枚舉1」); – Urchin 2014-10-29 18:53:56

+0

@Urchin你可以給它一個stringResId然後...但你必須建立你自己的適配器來從resId而不是toString得到字符串。 – SjoerdvGestel 2015-04-29 10:53:59