2011-03-14 70 views
13

Necesito algo así como un combobox en el acceso en Android, quiero elegir el cliente por nombre, pero en el fondo se debe elegir el id. ¿cómo hacer?Combobox en Android

+0

Tuve el mismo problema y finalmente lo encontré. Mira este enlace [Obtener valor seleccionado en spinner como C# combobox] [1] [1]: http://stackoverflow.com/questions/14354782/how-can-i- get-selected-value-in-spinner-such-as-c-sharp-combobox –

+0

intente con este ejemplo: http://stackoverflow.com/a/17650125/2027232 –

Respuesta

23

En comboboxes de Android se denominan spinner. Sin embargo, gnugu ha publicado en su blog su propia implementación de un combobox. http://www.gnugu.com/node/57

Un ejemplo simple de una ruleta sería la siguiente. En primer lugar, editar el código XML con algo como esto

Spinner android:id="@+id/Spinner01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 

el código Java debe incluir algo como esto, las opciones son muy intuitivos. Si está utilizando eclipse, le sugerirá algunas opciones

public class SpinnerExample extends Activity { 
    private String array_spinner[]; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // Here come all the options that you wish to show depending on the 
     // size of the array. 
     array_spinner=new String[5]; 
     array_spinner[0]="option 1"; 
     array_spinner[1]="option 2"; 
     array_spinner[2]="option 3"; 
     array_spinner[3]="option 4"; 
     array_spinner[4]="option 5"; 
     Spinner s = (Spinner) findViewById(R.id.Spinner01); 
     ArrayAdapter adapter = new ArrayAdapter(this, 
     android.R.layout.simple_spinner_item, array_spinner); 
     s.setAdapter(adapter); 
    } 
} 
+0

Gracias, ya he trabajado, PERO el problema es que necesito la identificación no es el valor que se muestra. Por ej. Clientes: Nombre ID 123 Robert M. Luisa 133 K. me eligieron Luisa K., pero luego quieren 133 no es la Luisa K. Lo – Mark

+0

sobre la configuración de una sentencia if que si se ha recogido "Robert", 123 se ajusta a una variable en el fondo? – eLobato

+2

¿Qué tal si haces una lista de valores basados ​​en la identificación seleccionada? Una lista de cadenas con nombres en ella y otra lista de int con su id almacenado en su. Vincula el spinner a la lista de nombres. Luego, cuando seleccionas un elemento en la rueda giratoria, busca la identificación seleccionada en la lista de enteros para obtener la identificación de la persona seleccionada. – Shaun

1

Una solución alternativa a la necesidad de vincular la identificación del cliente con el artículo seleccionado.

Tener un selector simple con el texto que causa hacer uso de los recursos de la matriz Configuración del hilandero en XML

<Spinner android:id="@+id/spinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/colors"/> 

Si necesita más datos relacionados con el control de giro puede utilizar objetos para poblar el spinner. La funcionalidad predeterminada de un ArrayAdapter es llamar a String() en cualquier objeto y pasarlo a la vista.

if (item instanceof CharSequence) { 
    text.setText((CharSequence)item); 
} else { 
    text.setText(item.toString()); 
} 

Puede implementar toString() en su objeto y se mostrará correctamente en la ruleta. Luego, para recuperar los datos de la matriz, puede agregar un controlador a ItemSelected y recuperar el objeto de la matriz de semillas o ArrayAdapter.

ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, arrayOfObjects); 
spinner.setAdapter(adapter); 
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{ 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
    { 
     Log.d(arrayOfObjects[position]._id); 
    } 

});