【问题标题】:Android: How to add enum labels to a spinner, not the enum.values()?Android:如何将枚举标签添加到微调器,而不是 enum.values()?
【发布时间】:2012-01-20 22:38:03
【问题描述】:

我正在尝试制作一个微调列表,我的用户可以在其中根据枚举“语言”类选择语言翻译。

添加 'Language.values()' 作品, 但微调器显示“af”而不是“AFRIKAANS” 我想要在微调器中显示“AFRIKAANS”名称,onItemSelected 我想要获取“af”值。

这可能吗?

public enum Language {
       AUTO_DETECT(""),
       AFRIKAANS("af"),
       ALBANIAN("sq"),
       AMHARIC("am") ....and so no..

在这里查看保持枚举类: 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) 
    {
    }
});

【问题讨论】:

    标签: java android enums spinner google-translate


    【解决方案1】:

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

    public String shortCode() {
      return language;
    }
    

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

    【讨论】:

    • 酷让它工作:) Log.i( Language.fromString(parent.getItemAtPosition(pos).toString()).shortCode() );
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多