Establecer el elemento seleccionado de la hiladora mediante programación

Estoy trabajando en un proyecto de androide y estoy utilizando una ruleta que utiliza un adaptador de matriz que se rellena de la base de datos.

No puedo averiguar cómo puedo establecer el elemento seleccionado mediante programación de la lista. Por ejemplo, si en la ruleta tengo los siguientes elementos:

  • Categoría 1
  • Categoría 2
  • Categoría 3

Cómo programaré por favor la categoría 2 el artículo seleccionado cuando se crea la pantalla. Yo estaba pensando que podría ser similar a c # IE Spinner.SelectedText = "Categoría 2", pero no parece haber ningún método similar a esto para Android.

Utilice lo siguiente: spinnerObject.setSelection(INDEX_OF_CATEGORY2) .

Ninguna de estas respuestas me dio la solución, sólo trabajó con esto:

  mySpinner.post(new Runnable() { @Override public void run() { mySpinner.setSelection(position); } }); 
 public static void selectSpinnerItemByValue(Spinner spnr, long value) { SimpleCursorAdapter adapter = (SimpleCursorAdapter) spnr.getAdapter(); for (int position = 0; position < adapter.getCount(); position++) { if(adapter.getItemId(position) == value) { spnr.setSelection(position); return; } } } 

Puede utilizar lo anterior como:

 selectSpinnerItemByValue(spinnerObject, desiredValue); 

Y por supuesto también puede seleccionar por índice directamente como

 spinnerObject.setSelection(index); 

Alguna explicación (al menos para Fragmentos – nunca probado con Actividad pura). Espero que ayude a alguien a entender Android mejor.

La respuesta más popular de Arun George es correcta, pero no funcionan en algunos casos.
La respuesta de Marco HC utiliza Runnable que es un último recurso debido a la carga adicional de la CPU.

La respuesta es – usted debe simplemente elegir el lugar correcto para llamar a setSelection () , por ejemplo funciona para mí:

 @Override public void onResume() { super.onResume(); yourSpinner.setSelection(pos); } 

Pero no funcionará en onCreateView () . Sospecho que es la razón del interés por este tema.

El secreto es que con Android no puedes hacer nada que quieras en ningún método – oops 🙁 – los componentes pueden simplemente no estar listos.Como otro ejemplo – no se puede desplazar ScrollView ni en onCreateView () ni en onResume () Ver la respuesta aquí )

Para buscar un valor y seleccionarlo:

 private void selectValue(Spinner spinner, Object value) { for (int i = 0; i < spinner.getCount(); i++) { if (spinner.getItemAtPosition(i).equals(value)) { spinner.setSelection(i); break; } } } 

¿Por qué no utiliza sus valores de la base de datos y los almacena en una ArrayList y luego simplemente usa:

 yourSpinner.setSelection(yourArrayList.indexOf("Category 1")); 

Usted puede hacer un método genérico para este tipo de trabajo como lo hago en mi UtilityClass que es

 public void SetSpinnerSelection(Spinner spinner,String[] array,String text) { for(int i=0;i<array.length;i++) { if(array[i].equals(text)) { spinner.setSelection(i); } } } 

Tengo un SimpleCursorAdapter así que tengo que duplicar los datos para utilizar el respose en esta entrada. Por lo tanto, te recomiendo que intentes de esta manera:

 for (int i = 0; i < spinnerRegion.getAdapter().getCount(); i++) { if (spinnerRegion.getItemIdAtPosition(i) == Integer .valueOf(signal.getInt(signal .getColumnIndexOrThrow("id_region")))) { spinnerRegion.setSelection(i); break; } } 

Creo que es una manera real

Usted puede fijar fácilmente como esto: spinner.setSelection (1), en vez de 1, usted puede fijar cualquier posición de la lista que usted quisiera demostrar.

Si tiene una lista de contactos, puede ir a esto:

 ((Spinner) view.findViewById(R.id.mobile)).setSelection(spinnerContactPersonDesignationAdapter.getPosition(schoolContact.get(i).getCONT_DESIGNATION())); 

Sé que ya está contestada, pero código simple para seleccionar un elemento, muy simple:

 spGenre.setSelection( ( (ArrayAdapter) spGenre.getAdapter()).getPosition(client.getGenre()) ); 
  for (int x = 0; x < spRaca.getAdapter().getCount(); x++) { if (spRaca.getItemIdAtPosition(x) == reprodutor.getId()) { spRaca.setSelection(x); break; } } 

Esto es trabajo para mí.

  spinner.setSelection(spinner_adapter.getPosition(selected_value)+1); 

En mi caso, este código guardó mi día:

 public static void selectSpinnerItemByValue(Spinner spnr, long value) { SpinnerAdapter adapter = spnr.getAdapter(); for (int position = 0; position < adapter.getCount(); position++) { if(adapter.getItemId(position) == value) { spnr.setSelection(position); return; } } } 

Esto funcionó para mí:

 @Override protected void onStart() { super.onStart(); mySpinner.setSelection(position); } 

Es similar a la solución @sberezin, pero llama a setSelection () en onStart ().

  • Android Spinner - ¿Cómo eliminar los botones de radio?
  • Eliminación del margen de la lista desplegable de hilanderos
  • Cómo mantener onItemSelected de disparar en un Spinner recién instanciado?
  • Establecer el modo spinner en XML
  • Android ActionBar / ActionBarSherlock múltiples opciones spinner
  • Cómo configurar el elemento seleccionado en MvxSpinner
  • La eliminación del último elemento de la ruleta suprime toda la lista
  • Android Spinner Artículo seleccionado
  • Estoy tratando de crear un spinner dinámico
  • Spinner con elementos de casilla de verificación, ¿es posible?
  • Crear un hilandero por programación android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.