2011-03-29 13 views
22

Por ejemplo: tengo una enumeración con días.¿Poner los valores ENUM a android spinner?

¿Cómo pongo sus valores en spinner?

+1

Tenga en cuenta que el uso de enumeraciones dentro del entorno de Android es menos eficiente. Si desea que su código tenga en cuenta el rendimiento, debe evitar enumeraciones de acuerdo con las directivas de rendimiento de Android. –

+3

@Luis Miguel Serrano, realmente no real de Android 2.2. –

+0

Hubo algunas cosas que encontré difíciles de implementar sin enumeraciones. – saikek

Respuesta

27

Una especie de tutorial está utilizando:

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

Al igual que en otra respuesta, pero se puede utilizar un ArrayAdapter para poblar la base de una clase Enum. Recomendaría reemplazar aString en la clase Enum para que los valores poblados en el spinner sean más fáciles de usar. En la actividad:

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

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

Su clase de enumeración:

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

Aunque prefiero la otra respuesta, es genial saber que algo como esto es posible. +1 – Antiohia

+0

Si deseo cambiar el idioma del sistema, ¿qué debo hacer? No puedo inicializar como ENUM1 ("Enum 1"); – Urchin

+0

@Urchin, entonces podría darle un stringResId ... pero tiene que construir su propio adaptador para obtener la cadena del archivo resId en lugar de toString. – SjoerdvGestel