Llenar Spinner de Android con array de tipo String

Publicado por parzibyte en

Spinner llenado con Array de Strings en Android

En este post explicaré cómo establecer un arreglo de cadenas como una lista desplegable o select en Android, usando el widget Spinner y llamando al método setAdapter.

Spinner llenado con Array de Strings en Android

Spinner llenado con Array de Strings en Android

Lo que haremos será ver cómo llenar el Spinner con opciones de un arreglo y además saber cuál opción fue seleccionada.

Definir Spinner en XML

En nuestro diseño vamos a poner un elemento de tipo Spinner. Es importante ponerle un id para obtener una referencia a él más tarde. En mi caso queda así:

Puede que en tu caso le agregues más cosas, sobre todo por eso de la orientación y ubicación dentro del layout. Fíjate que el id que tiene es spinnerCategoriaLugar.

Obtener referencia en Java

Luego definimos una variable de instancia (hasta arriba después del nombre de la clase) en Java así:

private Spinner spinerCategoriaLugar;

Y más abajo la iniciamos. Si estás en una actividad, pon lo siguiente dentro del método onCreate:

spinerCategoriaLugar = findViewById(R.id.spinnerCategoriaLugar);

Si es en un fragmento entonces recomiendo ponerlo dentro del método onViewCreated, así:

spinerCategoriaLugar = view.findViewById(R.id.spinnerCategoriaLugar);

En donde la variable view se nos pasa en onViewCreated como primer parámetro.

Llenar Spinner con Arreglo

Ahora que ya tenemos la referencia al Spinner vamos a definir un arreglo de las opciones que tendrá. Cuando las tengamos, llamamos a setAdapter y listo. El código queda así:

El ejemplo funciona con fragmentos, en un momento veremos cómo hacerlo dentro de una actividad. Por ahora analicemos los argumentos.

El método setAdapter recibe un simple adaptador que en este caso es de tipo ArrayAdapter. Pero al crear ArrayAdapter necesitamos 3 argumentos:

  1. En primer lugar recibe el contexto. Si estás en un fragment se obtiene con getActivity(), si estás en una actividad le pasas el nombre de la actividad.this como se ve en este post. Y ya en el peor de los casos llamas a getApplicationContext() aunque no lo recomiendo.
  2. En segundo lugar recibe el id del layout que usará para renderizar los elementos. Como no queremos nada personalizado entonces usamos el que Android provee por defecto: android.R.layout.simple_spinner_dropdown_item
  3. Finalmente recibe el arreglo que usará como elementos o items.

Llenar dentro de activity o actividad

Si no lo entendiste arriba, para llenarlo dentro de una actividad pasa el nombre de la actividad con .this en el primer argumento.

Suponiendo que estás en una actividad llamada MainActivity quedaría así:

Más información en mi otro post sobre el contexto.

Obtener opción seleccionada en Spinner

Cuando quieras obtener lo que el usuario seleccionó de la lista desplegable llama a getSelectedItem y castea a String. Así:

Escuchar cambios del Spinner

El ejemplo de arriba obtiene la opción seleccionada pero no escucha los cambios del spinner.

Si quieres saber cuando se selecciona otro elemento agrega un listener de tipo OnItemSelectedListener llamando a setOnItemSelectedListener y sobrescribe métodos así:

De esta manera sabrás cada que se seleccione otra opción. Con eso terminamos este post; te invito a ver más sobre Android en mi blog.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

2 Comments

Cambiar color de Spinner en Android - Parzibyte's blog · julio 4, 2019 a las 11:30 am

[…] Nota: si no sabes llenar un Spinner mira este post. […]

Spinner en Android: escuchar cambio de elemento seleccionado - Parzibyte's blog · julio 4, 2019 a las 5:17 pm

[…] Para probar puedes llenar tu Spinner con un simple arreglo. […]

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: