Android:如何将枚举标签添加到Spinner而不是enum.values()?

3
我正在尝试创建一个旋转列表,使用户可以根据枚举“Language”类选择语言翻译。
添加“Language.values()”是有效的,但是旋转列表显示的是“af”,而不是“AFRIKAANS”。我希望在旋转列表中显示“AFRIKAANS”名称,并在onItemSelected中获取“af”值。
这种可能吗?
public enum Language {
       AUTO_DETECT(""),
       AFRIKAANS("af"),
       ALBANIAN("sq"),
       AMHARIC("am") ....and so no..

请在此处查看 hold 枚举类: http://code.google.com/p/google-api-translate-java/source/browse/trunk/src/com/google/api/translate/Language.java

spinnerLanguage = (Spinner) findViewById(R.id.translate_spinner_language);
spinnerLanguage.setAdapter(new ArrayAdapter<Language>(this, android.R.layout.simple_spinner_item, Language.values()));
spinnerLanguage.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) 
    {
       Log.i("language", parent.getItemAtPosition(pos).toString());
    }
    public void onNothingSelected(AdapterView<?> parent) 
    {
    }
});
1个回答

4

不要覆盖toString(),而是将其更改为其他函数:

public String shortCode() {
  return language;
}

这样toString()将会返回AFRIKAANS用于Spinner显示,你可以在onItemSelected()中调用shortCode()来获取af


1
太棒了,它可以工作了 :) Log.i( Language.fromString(parent.getItemAtPosition(pos).toString()).shortCode() ); - Voidcode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接