Spinners en Android, tres formas de poblarlos.

¿Hola? ¿Hay alguien? Soy yo, DiCrEn, me recordarán por antiguos posts… de hace 2 años aproximadamente (sin contar con los de GPodcast). Por aquel entonces yo era un alegre jovenzuelo que se creía Dios por programar el snake con C, pero todo eso ha cambiado, ese jovenzuelo ha madurado, ha estudiado y ahora… se cree Dios por tener un par de aplicaciones en el Android Market 😀

Me he propuesto volver a tener un poquito de continuidad en el blog, cosa que, por supuesto, no conseguiré, pero bueno…

Y dicho esto vamos a lo que vamos, los spinners de Android. Vamos a dejarnos de gilipolleces y vamos al tema, imagino que tendrás instalado el SDK de android, el eclipse, etc, y que hayas hecho algo para el S.O. de google. Si no es así esto te va a interesar más bien poco.

¿Que son los spinners?

Los spinners en Android son los combobox de toda la vida. Spinner significa, según el traductor de google, hilandero. ¿Porque google ha decidido llamarlo así y no combobox como se ha hecho toda la vida? Y yo que sé. Voy a suponer, de nuevo, que has programado para Android y que sabes cómo se hacen las activitys y demás. Si no lo sabes busca por internet que manuales para empezar hay a patadas.

Para rellenar los spinners es un poquillo complejo, al final todo se arregla picando código, pero si quieres hacer algo especifico (como me pasó a mí, de hecho hay cosas que aún no he sabido arreglar) pues tiene su miga.

Vamos a lo básico. Para crear los objetos de los views en android se hace con findViewById.

Spinner prueba = (Spinner) findViewById(R.id.spinner1);

Ya tenemos el objeto de nuestro spinner. Ahora para poblarlo usamos un ArrayAdapter. Voy a comentar tres formas de hacerlo, dos de ellas bastante populares por internet, poblarla desde un archivo xml de arrays y desde la base de datos SQLite de Android, y una no tan popular pero bastante útil (y más compleja). Después de esto comentaré como obtener los datos elegidos por el usuario y porque me gusta más el tercer método para según qué cosas.

Poblando Spinners

Desde arrays.xml

Bien amigos, para esto necesitamos un archivo arrays.xml con los textos que queramos rellenar en el spinner y un par de líneas de código. El archivo arrays.xml, situado en res/values, tiene el siguiente formato.



    
        Salchichas
        Huevos
        Tomates
    

Bien, una vez que tengamos esto vamos a nuestro activity en java y utilizamos el siguiente código que explicaré después.

//Creamos el adaptador
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.comidas,android.R.layout.simple_spinner_item);
//Añadimos el layout para el menú
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Le indicamos al spinner el adaptador a usar
prueba.setAdapter(adapter);

Analicemos línea por línea.

En la primera creamos un ArrayAdapter. Tenemos que indicar entre <> el tipo de objeto que irá dentro del ArrayAdapter para evitar warnings y mejorar la legibilidad del código, en este caso CharSequence.

Este ArrayAdapter lo creamos pasándole como parámetros el contexto, que lo pasamos directamente con this (en otros casos tendrás que hacer un getApplicationContext() ) la referencia a las cadenas de texto que queremos y el layout genérico que proporciona Android para los Spinners.

Con la siguiente línea indicamos el layout, de nuevo genérico de Android, para crear el menú desplegable.

Por último, le añadimos al objeto del spinner el adaptador.

Una vez hecho esto ya tenemos nuestro precioso Spinner listo para entrar al campo a jugar. Vamos a complicarlo un poco más.

Desde SQLite

Android proporciona para nuestro deleite personas una base de datos SQLite. Aquí es posible que tengamos los datos que necesitamos para poblar nuestro Spinner. Vamos a ello.

Me ahorro el explicar cómo crear una base de datos SQLite en android, si necesitáis información sobre cómo manejarla ya sabéis, internet tiene la respuesta, solo diré que está abierta en el objeto baseDatos, que la tabla donde están los datos se llama comidas y la columna con lo que lo vamos a poblar nombres, además de una id.
Vamos con el código.

//Creamos el cursor
Cursor c = baseDatos.rawQuery("select id AS _id, nombre from comidas", null);
//Creamos el adaptador
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c,new String[] {"nombre"},    new int[] {android.R.id.text1}); 
//Añadimos el layout para el menú
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Le indicamos al spinner el adaptador a usar
prueba.setAdapter(adapter2);

Veamos, con el cursor hacemos un Query a la base de datos. Aquí hay un detalle importante, para que esto funcione necesitamos que la columna del identificador se llame _id, pero, no sé por qué, si la llamas así en la base de datos y luego haces un select normal no funciona, cosas de google (¿un bug?). Con AS funciona estupendamente. El segundo parámetro es para parámetros de selección, como no queremos nada pues le ponemos null.

Vayamos con el adaptador, que tiene tela. Creamos el adaptador en base a un cursor. Los parámetros son el contexto y el layout por defecto, como en el caso anterior, el cursor que hemos creado en la línea anterior, un array de String donde le indicamos que columna es la que tiene que tomar para mostrarlo y de nuevo otro layout por defecto que, sinceramente, no sé muy bien que hace.

Las otras dos líneas son iguales que en el caso del arrays.xml. Así de sencillo, ya tenemos un spinner que nos mostrará los registros de nuestra base de datos. Ahora vamos a complicarlo un poquito más.

Desde un objeto

En ocasiones necesitamos poblar el Spinner con elementos que no están en SQLite o en un array, como puede ser elementos que nos vengan desde una conexión a una base de datos, creados dinámicamente, o lo que sea.

Veamos los ingredientes; un spinner, que ya tenemos, una clase que genere los objetos que queramos, con su toString sobrescrito, unas cuantas líneas similares a las anteriores y sazonar al gusto.

Vamos con la clase de los objetos, que no tiene mucho misterio, pero bueno.

public class ObjetosClase{
	int id;
	String nombre;
	//Constructor
	public ObjetosClase(int id, String nombre) {
		super();
		this.id = id;
		this.nombre = nombre;
	}
	@Override
	public String toString() {
		return nombre;
	}
	public int getId() {
		return id;
	}
}

Creo que está claro, no hay que explicarlo. El getId lo usaremos en el siguiente punto, paciencia. Vale, ahora a crear el spinner.

//Creamos la lista
LinkedList comidas = new LinkedList();
//La poblamos con los ejemplos
comidas.add(new ObjetosClase(1, "Salchichas"));
comidas.add(new ObjetosClase(2, "Huevos"));
comidas.add(new ObjetosClase(3, "Tomate"));
//Creamos el adaptador
ArrayAdapter spinner_adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, comidas);
//Añadimos el layout para el menú y se lo damos al spinner
spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
prueba.setAdapter(spinner_adapter);

Si controlas un poco de java ves que he creado un nuevo LinkedList y he metido ahí los objetos con las 3 comidas que estamos utilizando.

Después he creado el ArrayAdapter como en el primer caso, solo que esta vez lo hemos creado pasándole el LinkedList. Fijaos que en este caso creamos el ArrayAdapter como cualquier objeto, y que en el primer caso utilizábamos el método estático createFromResource.

El resto ya lo conocemos de sobra. Ya tenemos nuestro spinner con nuestros objetos personalizados. Recordad que lo que toma como nombre es lo que está indicado en el toString.

Obteniendo el dato seleccionado

Ahora que ya tenemos nuestro spinner lleno de datos necesitamos conocer que dato elije el usuario. Para ello tenemos que crear un oyente. En este caso vamos a construirlo para el tercer modo de creación, para obtener el id, para el resto sería igual pero sustituyendo en la línea 4 el código, obteniendo el item y haciéndole toString directamente.

public class MyOnItemSelectedListener implements OnItemSelectedListener {
	public void onItemSelected(AdapterView parent, View view, int pos,long id) {
		if (parent.getId() == R.id.spinner1) {
			alimentoId = ((ObjetosClase) parent.getItemAtPosition(pos)).getId();
		}
		//Podemos hacer varios ifs o un switchs por si tenemos varios spinners.
	}
	public void onNothingSelected(AdapterView parent) {
		// Do nothing.
	}
}

Perfecto, ahora en cuanto un usuario pulse una opción de nuestro spinner se guardará en la variable alimentoId el id de nuestra comida escogida.

Como podéis ver, utilizando nuestros propios objetos es mucho más sencillo recuperar los datos. Podemos crear objetos relativamente grandes, con varios datos, y obtenerlos y tratarlos como queramos en el oyente. Estoy casi seguro que con el primer método también se podría sacar el id (o lo que queramos) de forma muy similar, pero no lo he conseguido.

Bueno hasta aquí el post. Perdonad el largor o longanismo de este, pero seguro que a más de uno le sirve.

You may also like...

62 Responses

  1. DiCrEn dice:

    ¡El que me pille la referencia a lo de “largor o longanismo” se lleva un premio! jeje

  2. Carpio dice:

    Perfecto! funciono…
    pero que como podría hacer si quisisera colocar una de las opciones seleccionadas??

    estoy usando el metodo de la base de datos…

    Gracias.

  3. DiCrEn dice:

    ¿colocar una de las opciones? ¿Entiendo que quieres ordenar la lista? Si es así puedes usar un ORDER BY en la sentencia SQL y ya esta.

    Si es otra cosa lo siento pero no te he entendido.

  4. Carpio dice:

    me refiero a que aparezca seleccionada una opcion..

    haciendo los pasos que indicas aparece siempre seleccionada la primera!

    cuando selecciono otra se guarda en una tabla de la BD con el metedo que indicas!

    pero cuando vuelvo a entrar en la activity no aparece seleccionada la que seleccione anteriormente sino la primera, y quisiera saber como puedo hacer para que aparezca seleccionada esa que marque.

    gracias…

  5. DiCrEn dice:

    Puedes utilizar spinner.setSelection(X) en el onCreate para cuando entres a la activity se te seleccione el de la posicion X por defecto.

    No encuentro ahora que se pueda hacer de otra forma, pasandole el nombre, pero seguro que hay alguna forma de hacerlo aunque sea indirectamente.

  6. Carpio dice:

    ummm.. prefiriria algo por el _id pero me sirve por la posicion por ahora!! graciaaaaaaaas!!! 😉

  7. Fredy dice:

    Necesito llenar un listview.
    Intenté adaptar el código pero me da error en la asignación del adaptador.

    ListView prueba = (ListView)findViewById(R.id.listView2);

    ArrayAdapter adapter =
    ArrayAdapter.createFromResource(
    this,R.array.comidas ,android.R.layout.activity_list_item);

    prueba.setadapter(adapter);

    Error en la linea:
    prueba.setadapter(adapter);
    Me dice “Syntax error on token “adapter”,VariableDeclaratorId expected aqfter this token”

    Si me das una mano gracias.

    Fedy

  8. nico dice:

    largor o longanismo: les luthiers la comision (himnovaciones)

  9. mau dice:

    mae buenisimo! gracias por el aporte!

  10. Roberto dice:

    Oye amigo, ya he llenado el spinner desde XML, ahora quiero llenarlo desde SQLite, sin embargo, con la opcion que das me marca un error, mi pregunta es, el parametro String [] (el penultimo) a que hace referencia?

    Saludos Gracias =)

  11. DiCrEn dice:

    Con ese array de Strings haces referencia al nombre de las columnas, en este caso a la columna nombres.

  12. Roberto dice:

    Aqui te dejo mi codigo, checalo, ya intente poner lo del AS en la consulta pero en SQLite me marca error, asi que no creo que sea por eso porque igual ya lo probe.
    Necesito tu ayuda

    Spinner cmbPilas=(Spinner) findViewById(R.id.cmbPilas);
    DatabaseHelper dbh=new DatabaseHelper(this);
    SQLiteDatabase db=dbh.getReadableDatabase();
    Cursor pilas = db.rawQuery(“select * from pilas”, null);
    //SimpleCursorAdapter c=new

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,pilas,new String[] {“ID”,”Capacidad”}, new int[] {android.R.id.text1});
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    cmbPilas.setAdapter(adapter);

  13. DiCrEn dice:

    Hace mucho que no utilizo esto, pero se me ocurre que quizás es porque utilices el comodín al crear el cursor, de echo creo que fue uno de mis errores cuando estaba programando un proyecto de este tipo.

    Lo dicho, haz el select indicando todos los nombres de las columnas, sin usar comodines.

  14. Roberto dice:

    Tampoco, ya lo intente asi “select _idpilas, cantidad from pilas;”, pero ya checaste bien mi codigo?
    esta todo bien?

  15. DiCrEn dice:

    El nombre de la columna de id tiene que ser _id, tu la llamas _idpilas. De todos modos, si no es eso pon el error que te da.

  16. Roberto dice:

    no such colum: id:, while compilling: select _idpilas, capacidad from pilas;

    Si será por eso? Apoco es afuerza que el id se debe llama _id???

  17. DiCrEn dice:

    Si, efectivamente, se tiene que llamar _id, lo puse en el articulo, y es una cosa que me dio mucha lata en su momento.

    Si te das cuenta en el error te dice que no encuentra la columna id… mas claro agua jeje

    Un saludo.

  18. rodrigo dice:

    final Spinner spinner1=(Spinner)findViewById(R.id.spinner1);
    Cursor c = baseDatos.rawQuery (“select _id,razas from perros;”, null);
    Hola, mira coloco esto y no funca, si me puedes ayudar… genial con el try catch me tira esto

    java.lang.NullPointerException
    pero no entiendo que variable esta llegando nula

    Gracias…

    SimpleCursorAdapter adaptador1=new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c,new String[] {“_id”}, new int[] {android.R.id.text1});

    adaptador1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adaptador1);

  19. Roberto dice:

    Que onda men te vuelvo a dar guerra, ya me salio lo de llenar el spinner, ahora, como podria sacar el valor de un spinner que ha sido llenado desde DB??
    Gracias

  20. Marce dice:

    Hola. Muy bueno el articulo. Yo lleno un spinner desde la base de datos. Despues una de las opciones del menu es agregar un fila mas a la tabla que uso para llenar el spinner. Cuando termino de agregar un nuevo registro a la base de datos y vuelvo a la pantalla del spinner, este spinner no esta actualizo. Como puedo hacer para actualizarlo automaticamente?

  21. Daniel dice:

    También es posible poblar un Spinner de una forma muy sencilla aquí no descrita:

    Hay una propiedad del Spinner llamada “entries” en la cual referenciando un array que tengas definido en string.xml, automáticamente te lo pobla con los valores de ese array.

    Un saludo.

  22. Tiberius dice:

    Gran artículo.

  23. Alastor dice:

    Muy bueno, con códigos asi de entendibles es posible crear aplicaciones entretenidas, veremos que me sale, XD

    Gracias !!!

  24. Jordi dice:

    Me ha ido de fábula!! Muchas gracias!!

  25. Roberto dice:

    Oye una pregunta desde un xml como se haría para leer el label y el id osea algo asi

    Uno
    1

    Dos
    2

    Tres
    3

    para que se muestre el id y el otro este oculto

  26. luis ibarra dice:

    hola, bueno tengo este codigo pero no puedo lograr que me muestre los valores. Ya tengo la bd con datos (ya cheque)
    Spinner spnEmpleados = (Spinner)findViewById(R.id.spnEmpleados);
    Cursor cur = database.rawQuery(“SELECT usuario FROM Empleados”, null);
    startManagingCursor(cur);
    String[] from = new String[] { “usuario” };
    int[] to = new int[] { android.R.id.text1 };
    SimpleCursorAdapter mAdapter =new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, cur, from, to);
    mAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
    spnEmpleados.setAdapter(mAdapter);

    alguna ayuda por favor?

  27. dave dice:

    hola estoy llenando el spinner con un ArrayList pero en la pantalla no me muestra el contenido del array, sino una direccion de este tipo para cda uno d elos elementos contenidos en el spinner:

    Mi.Paquete.Objeto@4456

    sin embqargo al pulsar sobre un elemento si obtengo los valores que corresponden a tal elemento, alguien sabe que es lo que pasa?

  28. DiCrEn dice:

    Hola dave.

    Disculpa la tardanza en contestar, fui a hacerlo el dia que comentaste pero no se porque petó el blog y luego se me pasó jeje

    Creo que simplemente es que tienes que sobrescribir el toString de los objetos con los que poblaste el ArrayList.

    Un saludo.

  29. arck dice:

    estoy intentando llenar un spinner con los datos de un LinkedList procesos = new LinkedList();
    lo lleno en otra clase en la que esta definida como static public Linkedlist……
    la cosa es que al pasar a la clase donde tengo los spinner peta por todos lados y no se que los tomo mal, me podrias dar tu email para que yo te envie el codigo y me dices ¿que hice catastroficamente mal?
    gracias

  30. Jose dice:

    te crees un Dios por tener un par de apps en el Market, pobre retrasado, seguro eres un friki y tonto programador, sin novia y sin vida jajaja, saludos imbesil.

  31. nycoag92 dice:

    estoy tomando los valores desde un array toma como defecto el primer valor del array. Hay alguna forma para que esto no pase, es decir q no tome valores, q salga en blanco o un msj tipo “Seleccione una opción”

  32. Toto dice:

    gracias loco!!! un abrazo!

  33. yor dice:

    Humm no veo por ningun lado eso de la conexion a mysql, osea que si yo tengo mi BD en un servidor y quiero que el spinner se llene con los datos de una tabla… obviamente con sqlite es facil pues hay muchos tutoriales de eso, en tu clase ObjetosClase no veo ningun tipo de conexion a BD lo unico que haces es llenar un objeto y luego cargarlo en el spinner, si hay un forma de hacer lo que dije me gustaria que lo postearas… Gracias.

  34. DiCrEn dice:

    Claro, yo explico ahí como cargar el spinner, para llenar el objeto tendrás que buscarte la vida jeje Yo en su momento lo hice a trabes de json con una petición a un script php.

  35. javasaurus dice:

    peroooo donde metes el codigo dentro de la activity, en el oncreate??? TUTORIAL MUY MAL EXPLICADO, UN COPY PASTE DEL DE ANDROID DEVELOPERS

  36. DiCrEn dice:

    Perdona la expresión, pero copiado mis cojones, de hecho lo escribí aquí porque me resulto muy dificil encontrar esta información en su momento.

    El código lo metes donde tu quieras, en el oncreate si quieres que los spinner se pueblen al iniciar el activity, o en una función si quieres que se pueblen cuando se ejecute esa función… depende de lo que quieras. Como bien puse al inicio del post escribía esto suponiendo que se tienen las nociones básicas de android, y el donde colocar un código ya no es básico de android, es básico de la programación en general.

  37. javasaurus dice:

    q si, q no lo habia leido: fui directamente al codigo. DISCULPAS (quise modificar comentario xo no se puede).

    ¿sabes si se pueden hacer spinners dependientes? ej. uno comunidades autonomas, otro provincias -> al seleccionar una comunidad se cargan las provincias

    gracias

  38. david dice:

    Excelente!!!
    Me sirvio de mucho, gracias por tomarte el tiempo de hacer esto.
    Tengo la misma duda de javasaurus, se pueden crear spinners dependientes?
    Gracias

  39. DiCrEn dice:

    @javasaurus Supongo que con ponerle un listener al primer spinner que escuche que opción has elegido y puebles el otro será suficiente.

    @david hummm… pues no lo se, ¿con swing? Ahora estoy trabajando con swing en un proyecto, lo puedo probar cuando tenga tiempo.

  40. yor dice:

    Hola, bueno luego de haber logrado llenar los spinner (tenias razon me pase una “vida” buscando como, y al final lo logre con json y php), ahora tengo la duda de:
    si tengo mi bd en la aplicacion android puedo migrar esos datos a una bd mysql en un hosting??
    de poderse me podrias almenos dar una pista de como hacerlo? llevo un par de dias buscando y la verdad a mi la idea de que se pueda me parece un poco loco 😀

  41. DiCrEn dice:

    Hola yor!

    Piensa que android usa sqlite, hay muchas herramientas que seguramente te sirvan.

    De un googleo me salen unas cuantas utilidades e infinitud de blogs que lo comentan, échale un ojo, recuerda, migrar de sqlite a mysql.

    El archivo de sqlite si mal no recuerdo se encontrará en /data/app/nombreDeTuApp.

    Un saludo, espero que lo consigas, y perdona por no ser más concreto.

  42. yor dice:

    Hola!
    Bueno la verdad yo me preguntaba si se podia hacer mediante programación en android no con alguna herramienta “X”, que de esas si he visto varias.
    Espero tu respuesta y disculpa tanta molestia.

  43. Laura dice:

    Hola q tal amigo esta muy bueno tu post quisiera saber si existe la forma de llenar un Spinner mediante un Edit Text q al momento de ingresar una cadena esta se copie o se muestre en el Spinner asi sucesivamente conforme el usuario lo requiera.

    Espero puedas ayudarme
    Gracias por tu atencion

  44. DiCrEn dice:

    Hola Laura.

    Supongo que usando el método de poblarlo con objetos funcionará, creas el objeto a partir del EditText y lo metes al spinner.

    Un saludo.

  45. jorge coronel dice:

    Hola, espero me puedas ayudar, para cargar datos dinamicos en dos spinner ejemplo clasico
    tabla 1 Estados
    Tabasco
    Veracruz
    etc
    tabla 2 ciudades
    Centro (tabasco)
    Macuspana(tabasco)
    poza rica(veracruz)
    etc
    si en el spinner estados elijo tabasco, me deberian de salir solo centro Y macuspana, si elijiera veracruz en el otro espiner seria poza rica, alguna forma de ayudarme saludos…

  46. DiCrEn dice:

    Hola Jorge.

    Hace mucho que no trabajo con spinners y la verdad es que no me acuerdo exactamente del código, pero supongo que puedas hacer un oyente que coja la selección del primer spinner y, dentro del oyente, cargar el segundo spinner con la información que necesites.

    Siento no poder ser más claro, espero que te sirva de ayuda.

    Un salduo.

  47. aurora dice:

    Hola,

    Estoy usando un spinner lleno a partir de un array, pero cuando lanzo la Activity no me aparecen los valores del array.

    Spinner valores = (Spinner) findViewById(R.id.spiner_valoracion);

    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,R.array.valor);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    valores.setAdapter(adapter);

    Lo que intento es que me carge los valores y al pinchar sobre él se despliegue con todos los valores del array.

    Si puedes ayudarme

    Gracias
    😉

  48. Exeleon dice:

    El método 3 usando objetos de la clase me pareció interesante, yo lo había hecho guardando el ID del elemento en el atributo Tag del TextView y el NOMBRE en el atributo Text…

  49. Perezosso dice:

    Bien explicado. Lo que me molesta del Java es la que hay que preparar para rellenar un spinner…podian hacerlo mas sencillo pues para aparender fatiga más. Cpmo bien dices al final el codigo hay que picarlo. Gracias

  50. Palomita dice:

    Que tal, un saludo a todos, espero puedan ayudarme, quiero sincronizar 3 spinners en Android, alguien que pueda ayudarme

    El ejemplo es: si selecciono un item de index 4 en X spinner los otros dos seleccionen el mismo index en la posicion 4.

    Gracias de antemano

  51. Juan González dice:

    Buenas noches, estoy probando el método del fichero .xml, pero al lanzar la aplicación me da el típico error de “desafortunadamente ha dejado de funcionar”

    Lo que quiero es desplegar una serie de valores para asignar a un temporizador.

    El XML es este:
    —————————————-

    0:00
    0:15
    0:30
    0:45
    1:00
    1:15
    1:30
    1:45
    2:00
    2:15
    2:30
    2:45
    3:00
    3:15
    3:30
    3:45
    4:00
    4:15
    4:30
    4:45
    5:00

    ————————————

    Y el código que probé:

    ————————————
    ArrayAdapter roundAdapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.values, android.R.layout.simple_spinner_item);
    roundAdapter.setDropDownViewResource((android.R.layout.simple_spinner_dropdown_item));
    sp_round.setAdapter(roundAdapter);
    ————————————-
    (y el mismo de arriba pero con “this” en vez de “getApplicationContext()”

    Alguna sugerencia? Muchas gracias por tu tiempo :)

    Un saludo, Juan.

  52. Jonathan dice:

    Buenas como puedo mostrar 2 datos traidos de una base de datos mysql y concatenados en un spinner usando un simpleadapter ejemplo nombre y apellido ya que solo puedo mostrar el nombre

  53. Toqu3 dice:

    Buenos dias..
    Quisiera saber si se puede poner en un spinner key y value.. algo asi como un select en html VALUE ..
    gracias

  54. Ernesto dice:

    saludos :
    como hago para que al seleccionar un datos en el spinner internamente me envié el id a mi consulta que ara que me cargue otro spinner

  55. gustavo dice:

    ok, y como llenar un spinner con los datos que vaya ingresando. ejemplo:
    tengo mi ventana principal en la cual va a obtener la ip y un puerto. al presionar el boton de configurar datos me manda a ingresar la ip y el puerto. estos se van a ir guardando en un arreglo de tipo objeto cada vez que desee guardar nuevos datos. despues de que eh guardado los datos mi ventana principal jala esos datos y hace la conexion. tengo otro boton donde me va a mostrar los datos que eh llenado ip y puerto. Tengo otro boton el cual se llama editar, este muestra lo que di de alta y me permite eliminar y editar lo que guarde anteriormente.

  56. Cesar dice:

    “Obteniendo el dato seleccionado
    Ahora que ya tenemos nuestro spinner …, para obtener el id, para el resto sería igual pero sustituyendo en la línea 4 el código, obteniendo el item y haciéndole toString directamente.”

    Podrías ser mas claro por favor o colocar el codigo correspondiente? soy muy nuevo en esto y no he podido hacerlo….

  57. vander dice:

    para llenarlo desde un json q viene de un web service? llevo ya un rato buscando y no lo consigo. gracias

  58. Hube Salazar dice:

    Saludos
    Muchas gracias por el aporte de verdad esta magnifico
    Me fue de mucha utilidad, solucione una necesidad de varios días

  59. lizfelina dice:

    final Spinner opciones = (Spinner)findViewById(R.id.clasifA);

    final String[] datos= new String[]{“Caducifolio”,”Perene”,”Conifera”,”Palmera”};
    ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_spinner_item,datos);
    adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    for (int i = 0; i < datos.length; i++) {
    if (datos[i].equalsIgnoreCase(arbol.getClasificacion() )) {
    clasificacion.setSelection(i);
    break;
    }
    }

  60. lizfelina dice:

    esto sirve para cuando quieres preseleccionar un elemento del spinner con el nombre (String) del objeto a seleccionar

  61. lizfelina dice:

    el arbol tiene el atributo clasificacion como string

Deja un comentario

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