Android: как добавить enum-ярлыки в спиннер, а не enum.values ​​()? - PullRequest
3 голосов
/ 15 декабря 2011

Я пытаюсь составить список счетчиков, в котором мои пользователи могут выбирать языковые переводы на основе класса enum 'Language'.

Добавление 'Language.values()' работает, но счетчик показывает "af" не«AFRIKAANS» Я хочу, чтобы имя «AFRIKAANS» отображалось в счетчике, и onItemSelected Я хочу получить значение «af».

возможно ли это?

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

См. Удержание enumкласс здесь: 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 голосов
/ 15 декабря 2011

Вместо переопределения toString() измените его на другую функцию:

public String shortCode() {
  return language;
}

Таким образом toString() вернет AFRIKAANS для дисплея Spinner, и вы можете вызвать shortCode() вonItemSelected() чтобы получить af.

...