将spinner和ArrayAdapter与Enum一起使用,将微调器文本设置为枚举属性

时间:2013-10-16 13:53:58

标签: android android-arrayadapter

所以我有一个类似于......的枚举。

package com.example.manageyobudget.model;

public enum FilingStatus {
//TODO: Would changing these texts to static or values help?
MARRIED("2:married", "Married"),
SINGLE("1:single", "Single"),
HEAD_OF_HOUSEHOLD("3:Head of Household", "Head of Household"),
SUPPLEMENTAL("4:Supplemental","Supplemental");

private String val;
private String text;
private FilingStatus(String val, String text){
    this.val = val;
    this.text = text;
}
public String getVal(){
    return this.val;
}
    public String getText(){
    return this.text;
}
public static String[] getTexts(){
    int count = FilingStatus.values().length;
    String[] values = new String[count];
    for(FilingStatus e : FilingStatus.values()){
        values[count--]=e.text;
    }
    return values;
}

}

现在我想创建一个微调器,我希望ArrayAdapter成为枚举,而我希望显示文本是text属性的值。在另一个我翻译听众的价值,所以我认为我需要类似的东西......

Spinner filestat = (Spinner)rootView.findViewById(R.id.filestat);
filestat.setAdapter(new ArrayAdapter<FilingStatus>(this.getActivity(), 
            android.R.layout.simple_list_item_1, 
            FilingStatus.values()));
filestat.setOnItemSelectedListener(this);

但是这会使用序号作为微调器中显示的值。我怎样才能使它成为文本属性?我是否需要创建一个基于Text查找枚举的方法?这似乎是很多开销。

1 个答案:

答案 0 :(得分:2)

你不能只重写枚举上的toString()方法,并返回你想用作显示值的任何值。