java - studio - spinner android
ConfiguraciĆ³n de valores y visualizaciĆ³n de texto en Android Spinner (2)
Paso # 1: Crea un modelo de datos para tu par de texto y valor
Paso # 2: Extienda BaseAdapter
o ArrayAdapter
para envolver alrededor de su modelo de datos, anulando getView()
para devolver lo que quiera mostrar en el Spinner
Paso 3: en un evento de selección, use la posición para encontrar el objeto correspondiente en su modelo de datos y busque el valor
Si todo lo que desea mostrar en el Spinner
es solo una representación de texto de cada elemento en el modelo de datos, puede omitir el Adapter
personalizado; simplemente use ArrayAdapter<YourModelClass>
y anule toString()
en YourModelClass
para devolver cualquier texto de visualización que desee .
Necesito ayuda para configurar el valor y mostrar el texto en la rueda giratoria. como ahora estoy poblando mi spinner por adaptador de matriz, por ejemplo
mySpinner.setAdapter(myAdapter);
y hasta donde sé, después de hacer esto, el texto de la pantalla y el valor del girador en la misma posición son los mismos. El otro atributo que puedo obtener de spinner es la posición en el elemento.
ahora, en mi caso, quiero hacer spinner como el cuadro desplegable, que tenemos en .NET.
que contiene un texto y un valor.
donde se muestra el texto y el valor está en el back-end. así que si cambio el cuadro desplegable, puedo usar su texto o valor seleccionado. pero no está sucediendo en el caso de Android Spinner.
Por ejemplo:
Valor de texto
Gato 10
Montaña 5
Piedra 9
Pescado 14
Rio 13
Lomo 17
así que de la matriz anterior solo estoy mostrando texto de objetos que no están vivos, y lo que quiero es que cuando el usuario los seleccione llego a un valor, es decir, cuando seleccioné Mountain, obtengo 5
Espero que este ejemplo haya hecho mi pregunta un poco más clara ...
Thankx
Si no desea crear su propia clase de adaptador, en lugar de eso, puede resumir sus datos en algo que debe devolver a la cadena lo que desea mostrar en la ruleta. Yo uso una clase como esta:
public class TextItemPair<T> {
private String text;
private T item;
public TextItemPair(String text, T item) {
this.text = text;
this.item = item;
}
public String getText() {
return text;
}
public T getItem() {
return item;
}
@Override
public String toString() {
return getText();
}
}
Y cuando la ruleta cambia:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
YourTypeHere t = ((TextItemPair<YourTypeHere>)spinner.getItemAtPosition(position)).getItem();
}