with programacion objetos example con android spinner

android - programacion - ID de configuración para elementos de Spinner



spinner con objetos android (5)

¿Qué quieres decir con id. Puedes usar ArrayAdapter para rellenar el Spinner. Cuando se selecciona el elemento, simplemente obtenga el elemento del adaptador y guarde los datos que desea.

Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<MyObject> adapter = ... // initialize the adapter adapter.setDropDownViewResource(android.R.layout.some_view); spinner.setAdapter(adapter);

y cuando se selecciona el elemento

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { MyObject selected = parent.getItemAtPosition(pos); // save any data relevant with selected item }

Si está almacenando sus datos en db, puede usar CursorAdapter y en onItemSelected para obtener la identificación del elemento seleccionado del cursor.

Tengo una serie de cadenas con las que estoy poblando un objeto Spinner. Sin embargo, me gustaría adjuntar una ID a cada elemento del Spinner, por lo que cuando el usuario selecciona un elemento, tengo su ID para usar para guardar en otra parte de los datos. ¿Cómo puedo hacer esto?


Andrew Hola, ha pasado mucho tiempo pero vale la pena escribir.

Puede establecer una etiqueta para cada fila cuando esté inflando spinnerLayout en SpinnerAdapter :

spinnerView = inflater.inflate(spinnerLayout, parent, false); spinnerView.setTag("Your Tag");

Y luego puede obtener la etiqueta con:

yourSpinner.getSelectedView().getTag();


Cree una clase StringWithTag y úsela en lugar del nombre de la cadena en la lista de esta manera:

public class StringWithTag { public String string; public Object tag; public StringWithTag(String stringPart, Object tagPart) { string = stringPart; tag = tagPart; } @Override public String toString() { return string; } }

en la parte de agregar elementos a la parte de giro: -

List<StringWithTag> list = new ArrayList<StringWithTag>(); list.add(new StringWithTag("Oldman", "12345")); list.add(new StringWithTag("Umpire", "987654")); list.add(new StringWithTag("Squad", "ABCDEE")); ArrayAdapter<StringWithTag> adap = new ArrayAdapter<StringWithTag> (this, android.R.layout.simple_spinner_item, list); .... ....

en el oyente: -

public void onItemSelected(AdapterView<?> parant, View v, int pos, long id) { StringWithTag s = (StringWithTag) parant.getItemAtPosition(pos); Object tag = s.tag; }

voila }


Creo que la mejor solución es agregar una rueda giratoria más y rellenarla con los ID, pero hacer que la visibilidad de ella desaparezca.


No creo que pueda adjuntar una ID arbitraria a los elementos de un recurso de matriz de texto, si eso es lo que está usando.

Creo que la forma más sencilla de adjuntar una identificación de este tipo sería codificar (si está usando un recurso de texto estático) o compilar dinámicamente (si obtiene las cadenas en tiempo de ejecución) una asignación de (posición de cadena en la matriz) - > (clave principal).

EDITAR: Por otro lado, Mojo Risin tiene un punto: debe verificar si la API de CursorAdapter ya hace lo que necesita para usted.