Tengo una matriz de cadenas con las que estoy rellenando un objeto Spinner. Sin embargo, me gustaría adjuntar una identificación a cada elemento del Spinner, por lo que cuando el usuario selecciona un elemento, tengo su ID para usar para guardar en algún otro dato. ¿Cómo puedo hacer esto?Configuración de ID para elementos Spinner
Respuesta
¿Qué quieres decir con id. Puede usar ArrayAdapter para llenar el Spinner. Cuando se selecciona un elemento, simplemente obtenga el elemento del adaptador y guarde los datos que desee.
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 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 va a almacenar sus datos en dB puede utilizar CursorAdapter y en onItemSelected para ir a buscar el identificador de elemento seleccionado desde el cursor.
Si uso un CursorAdapter, ¿cómo le digo que la columna "nombre" es para el texto? que aparece en la lista? – Andrew
No creo que pueda adjuntar una ID arbitraria a 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 sería a código fijo (si está utilizando un recurso de texto estático) o construir dinámicamente (si obtiene las cadenas en tiempo de ejecución) una asignación desde (posición de cadena en conjunto) -> (clave principal).
EDITAR: Por otro lado, Mojo Risin tiene un punto: debe verificar si la API CursorAdapter ya hace lo que necesita para usted.
Creo que la mejor solución es añadir un spinner más y llenarlo con los identificadores, pero que la visibilidad de la misma a ido
Crear una clase StringWithTag y utilizar en lugar del nombre de la cadena en la lista como tal : -
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 las añadir elementos a parte spinner: -
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! }
donde obtienes StringWithTag? StringWithTag no se puede resolver con un tipo ... –
@Robert ... err ... StringWithTag es algo creado como en el primer bloque de código anterior. – mfc
¡Esta solución es elegante y perfecta! Esto también implementa el valor de la clave de Spinner como HTML
Andrew Hola, ha pasado mucho tiempo pero vale la pena escribir.
Puede establecer una etiqueta para cada fila cuando you'r inflar spinnerLayout en SpinnerAdapter:
spinnerView = inflater.inflate(spinnerLayout, parent, false);
spinnerView.setTag("Your Tag");
Y entonces se puede obtener la etiqueta con:
yourSpinner.getSelectedView().getTag();
- 1. Spinner borrar elementos
- 2. Configuración manual del ID
- 3. Configuración de valores y visualización de texto en Android Spinner
- 4. Spinner con elementos de casilla de verificación, ¿es posible?
- 5. Spinner desplegable elementos de menú de color (Android)
- 6. ID de elementos coincidentes con vista dinámica JSF Id
- 7. Encontrar elementos con Id dinámico
- 8. androide Spinner: Texto centro verticalmente dentro spinner
- 9. Atributo de estilo versus ID de configuración y Css externo
- 10. Configuración de color de fondo para Spinner Artículo en la selección
- 11. Android: dos Spinner onItemSelected()
- 12. No puedo arreglármelas para solicitarFocus a Spinner
- 13. Id oculto con elementos de ComboBox?
- 14. Javascript: Obtenga todos los elementos con ID id [x]
- 15. Spinner con Click Listener
- 16. Agregar entradas al adaptador de matriz para Spinner en Android
- 17. Dos elementos XML con el mismo ID
- 18. Spinner de selección múltiple
- 19. Cómo establecer el color del texto de los elementos en Spinner Android
- 20. Uso de SimpleAdapter con Spinner
- 21. Android spinner cerrar
- 22. Ancho proporcional de elementos en LinearLayout
- 23. Configuración Enfoque en elementos nuevos en Elementos Control
- 24. Android - configurar Spinner utilizar matriz
- 25. diferencia entre @id y @android: id
- 26. Texto de medio corte en Spinner Android
- 27. Android: Disposición de Spinner personalizada
- 28. Android: Rellenar Spinner desde el código de Java programáticamente
- 29. Android Spinner Ítem seleccionado
- 30. Refreshing a Spinner
I don' ¿Entiende, la posición del giradiscos o la matriz no es suficiente para usar como una identificación? – ferostar
Es una identificación específica del artículo en el Spinner. Podría ser 1; podría ser 93847549387925187. Es una clave principal de base de datos. – Andrew
Andrew tengo el mismo problema ... si tiene la respuesta a su pregunta que me ayude a ... –