Spinner
Explicación del concepto de Spinner
DEFINICIÓN
Hereda de:

Los Spinner (controles de números) ofrecen una manera rápida de seleccionar un valor de un conjunto.
En el estado predeterminado, un Spinner muestra su valor actualmente seleccionado. Al tocar el control de números, se muestra un menú desplegable con todos los demás valores disponibles, de los cuales el usuario puede seleccionar uno.
Los Spinner heredan de AdapterView que son una serie de Views que necesitan de un adapter para gestionar correctamente las opciones.
MATERIAL DESIGN
Debido a una serie de errores en el desempeño de la clase Spinner, cuando se desarrollo Material Design el Spinner se quedó fuera.
Fue sustituido por:
https://www.material.io/components/menus/android#exposed-dropdown-menus
USO DESDE XML
A pesar de que su uso desde XML es muy sencillo, se debe tener en cuenta que es necesario un SpinnerAdapter para que el Spinner funcione correctamente:

ATRIBUTOS
android:dropDownHorizontalOffset
Define la diferencia horizontal, en pixeles, entre el desplegable y la flecha.
android:dropDownSelector
Define el drawable que se utilizará en vez de la flecha apuntando hacia abajo.
android:dropDownVerticalOffset
Define la diferencia vertical, en pixeles, entre el desplegable y la flecha.
android:dropDownWidth
Define la anchura del menú desplegable.
android:gravity
Define la posición en la que se colocará el item seleccionado.
android:popupBackground
Define el drawable que se utilizará de fondo en el menú desplegable.
android:prompt
el texto a mostrar cuando se muestra el dialogo del Spinner.
android:spinnerMode
Define el modo en que se muestra el Spinner, hay dos modos:
Dropdown -> Las opciones se muestran al usuario como un menú desplegable.

Dialog -> Las opciones se muestran al usuario en forma de diálogo.

CONFIGURACIÓN
Adapter
Las opciones que se muestran en el Spinner pueden provenir de cualquier fuente, sin embargo, se deben proveer con un adapter. Este adapter será:
SpinnerAdapteroArrayAdapter-> Si provienen de una Array.CursorAdapter-> Si vienen de una consulta a base de datos.
En este caso se va a utilizar un Array almacenado en el archivo de resources strings.xml:
A continuación se va a proceder a desarrollar el Adapter, en este caso utilizaremos un ArrayAdapter:
Opción 1: createFromResource
Es la opción recomendada por Google
Opción 2: ArrayAdapter normal
Listener
Cuando un usuario selecciona un elemento de menú desplegable, el objeto Spinner recibe un evento en relación con el elemento seleccionado.
Para definir el controlador del evento de selección para un Spinner, hay que seguir los siguientes pasos:
implementa la interfaz
AdapterView.OnItemSelectedListenerImplementar los método miembro de devolución de llamada
onItemSelected()yonNothingSelected()correspondientes.
Para obtener el ítem seleccionado lo puede hacer con parent?.getItemAtPosition(pos)
EJEMPLO
A continuación mostraré el código completo del ejemplo de esta entrada:


Last updated
