Saltar al contenido

¿Cómo configurar el elemento seleccionado de Spinner por valor, no por posición?

Solución:

Suponga que su Spinner es nombrado mSpinner, y contiene como una de sus opciones: “algún valor”.

Para encontrar y comparar la posición de “algún valor” en el Spinner, use esto:

String compareValue = "some value";
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
if (compareValue != null) {
    int spinnerPosition = adapter.getPosition(compareValue);
    mSpinner.setSelection(spinnerPosition);
}

Una forma sencilla de configurar la ruleta en función del valor es

mySpinner.setSelection(getIndex(mySpinner, myValue));

 //private method of your class
 private int getIndex(Spinner spinner, String myString){
     for (int i=0;i<spinner.getCount();i++){
         if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(myString)){
             return i;
         }
     }

     return 0;
 } 

El camino al código complejo ya está ahí, esto es mucho más sencillo.

Mantengo una ArrayList separada de todos los elementos en mis Spinners. De esta manera puedo hacer indexOf en ArrayList y luego usar ese valor para establecer la selección en el Spinner.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *