Você está na página 1de 9

25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia

1/9 www.blog.edersonlima.net/?p=58
Ederson Lima Design, Programao e Tecnologia
Blog pessoal do Ederson Lima com dicas sobre o desenvolvimento de aplicaes web e desktop
Main Menu
Incio
Links
Sobre min
Contato
Preencher Spinner com ArrayList
1
Curtir Uma pessoa curtiu isso.
Ol pessoal, estou aqui mais uma vez para postar mais um pequeno tutorial, desta vez para quem est comeando a desenvolver aplicativos na
plataforma ANDROID.
Spinner so os conhecidos combo-box para os programadores ou a tag select para os web-designers.
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
2/9 www.blog.edersonlima.net/?p=58
Podemos preencher um spinner de diversas formas, aqui estarei mostrando como preench-lo partir de um ArrayList, ou seja, comum fazermos um select no banco de
dados e preenchermos em um ArrayList os objetos vindos do banco, ento mostrarei aqui como usar este ArrayList no preenchimento de um Spinner. Vamos l!
ExemploSpinner.java (Activity)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.android.edersonlima.exemplos;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.List;
import java.util.ArrayList;

public class ExemploSpinner extends Activity {

private Spinner spn1;
private List<String> nomes = new ArrayList<String>();
private String nome;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exemplo_spinner);

//Adicionando Nomes no ArrayList
nomes.add("Joo");
nomes.add("Maria");
nomes.add("Jos");
nomes.add("Paulo");
nomes.add("Adriana");

//Identifica o Spinner no layout
spn1 = (Spinner) findViewById(R.id.spinner1);
//Cria um ArrayAdapter usando um padro de layout da classe R do android, passando o ArrayList nomes
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, nomes);
ArrayAdapter<String> spinnerArrayAdapter = arrayAdapter;
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spn1.setAdapter(spinnerArrayAdapter);

//Mtodo do Spinner para capturar o item selecionado
spn1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long id) {
//pega nome pela posio
nome = parent.getItemAtPosition(posicao).toString();
//imprime um Toast na tela com o nome que foi selecionado
Toast.makeText(ExemploSpinner.this, "Nome Selecionado: " + nome, Toast.LENGTH_LONG).show();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

}

}
exemplo_spinner.xml (Layout)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exemplo Epinner">
</TextView>

<Spinner
android:id="@+id/spinner1"
android:layout_width="fill_parent"
android:layout_height="54px">
</Spinner>

</LinearLayout>
Podemos ver na linhas 35 e 37 da classe ExemploSpinner.java que a classe R do android tm vrios layouts prontos para uso nos Widgets da plataforma Android.
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
3/9 www.blog.edersonlima.net/?p=58
Celular Tim 2
Chips
R$ 479,00
10x R$ 47,90
Smartphone linha
G Gradiente
R$ 599,00
10x R$ 59,90
Smartphone
Galaxy SII I9100
R$ 979,02
10x R$ 99,90
Nextel Motorola
i296 Preto
R$ 269,10
vista
BuscaP | Lomadee
Com esse exemplo fica fcil tambm a utilizao de uma lista de itens no spinner vindos de um banco de dados por meio de um Cursor passando os valores para um ArrayList.
At a prxima
Busca inteligente, compra consciente
Sobre o Autor
Atualmente Engenheiro de Sistema na LizardSoft e Aluno do Curso de Mestrado em Cincia da Computao pela UFPE, gosta de Design de Sistemas, Java, Android, PHP
e jQuery.
Compartilhe nosso Artigo
Posts Relacionados
AlertDialog com formulrio XML
Tipos de Dimenses em Android
Criando 2 layouts (horizontal e vertical) em android
Introduo ao Android Parte 1 (Activity, Intent e AndroidManifest)
Comentrios
1.
Junior Barbosa maro 14, 2011
Responder
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
4/9 www.blog.edersonlima.net/?p=58
s queria ser o primeiro a fazer um comentrio
2.
Edmara julho 1, 2011
Responder
Ol!
Parabns pelo post
Gostaria de carregar o spinner conforme o exemplo, porm quero definir que determinado nome j venha marcado isso possvel?
Ederson Lima julho 1, 2011
Responder
Ol Edmara, usando o mtodo setSelection(indice) possvel fazer o que voc pede, ento voc pode fazer de duas maneiras: Colocando diretamente o ndice do
valor que voc deseja iniciar no spinner ou pecorrer o arraylist procura do nome que voc deseja, veja o exemplo:
//spn1.setSelection(2); Assim voc passa diretamente o indice
for (int i = 0; i < nomes.size(); i++) {
if (nomes.get(i).toString() == Paulo) {
spn1.setSelection(i); //Assim voc procura pelo nome desejado
}
}
Esse cdigo deve ficar depois da linha 38 do exemplo do post, qualquer dvida s perguntar!
Abrao
3.
Joo outubro 10, 2011
Responder
Ol edersom. por favor modifique esse exemplo com os dados que vem do banco . pois mesmo seguindo a sua dica no consegui fazer.
Ederson Lima outubro 12, 2011
Responder
Isso envolve persistncia de dados com o banco e fica um pouco fora do intito do post, mas num futuro post, fao um exemplo de persistncia com o banco
sqlite do android! =)
4.
Rodrigo Valentim abril 1, 2012
Responder
Ol Ederson,
Parabens pelo post.
Como voc aconselha trabalhar com o Spinner para por exemplo, cdigo descrio?
Tenho uma entidade que carrego no Spinner, porm, s carrego a descrio. Porm, quando selecionado, gostaria de descobrir o cdigo referente aquela descrio para
a fazer uma consulta na minha base de dados e usar esse dado como filtro.
Tem como? sabe alguma forma?
Obrigado
Ederson Lima abril 11, 2012
Responder
Quando voc vai popular o spinner com os registros, a coleo desses registros normalmente so listas ou arrays, ento, o ndice 0 do Spinner vai ser o ndice 0
da lista ou array, o ndice 1 do Spinner vai ser o ndice 1 da lista ou array e assim por diante! Ento s vc pegar o ndice do tem selecionado no Spinner que
vai ser o ndice do tem na sua Lista ou Array!!! Espero que eu tenha explicado bem! ^^ Qualquer dvida s perguntar!
5.
Caio Cunha junho 5, 2012
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
5/9 www.blog.edersonlima.net/?p=58
Responder
Ol Ederson Lima,
no meu caso o meu programainha tem 4 spinner, casa um deles vai buscar os seus respectivos items no ficheiro string.xml!
O que eu quero sabr se tem como fazer apenas um metodo que pegue logo os 4 valores escolhidos! isso depois de clicar em um botao de submit!
tem como me ajudar?
obrigado desde ja abrao!
Ederson Lima junho 6, 2012
Responder
Tendo como base que o boto j foi criado e nome dele btn1, segue abaixo um exemplo que na ao desse boto, eu poderia pegar os valores dos 4 spinners:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//pega os dados dos spiners
String valor1 = spn1.getItemAtPosition(spn1.getSelectedItemPosition()).toString();
String valor2 = spn2.getItemAtPosition(spn2.getSelectedItemPosition()).toString();
String valor3 = spn3.getItemAtPosition(spn3.getSelectedItemPosition()).toString();
String valor4 = spn4.getItemAtPosition(spn4.getSelectedItemPosition()).toString();

//insere em uma intent para outra Activity tratar o formulrio (cadastro, etc)
intent.putExtra("valor1", valor1);
intent.putExtra("valor2", valor2);
intent.putExtra("valor3", valor3);
intent.putExtra("valor4", valor4);

//lana a intent
startActivity(intent);
}
});
As 4 String (valor1, valor2, ) j tero os dados dos spinners de que voc precisa, a parte onde coloquei a insero na intent e a chamada para outra Activity
opcional, ou seja, como eu no sei se voc trata o formulrio na prpria Classe ou em outra Classe no d para saber se vai precisar ou no de criar uma intent
com os atributos e chamar outra Activity!
Espero que tenha entendido!!! =)
6.
Frederico Brigatte setembro 5, 2012
Responder
Ederson,
Vi seu post sobre o spinner. Como posso pegar o id do item selecionado? Voc j fez o tutorial sobre preencher com banco?
Ederson Lima setembro 10, 2012
Responder
Voc pode usar o spn1.getSelectedItem(); e, sobre o tutorial de preencher partir de um banco, praticamente a mesma coisa, os dados persistidos estaro em
algum Array ou List, da s colocar o atributo do Banco que voc quer que aparece no Spinner em um ArrayList e usar preencher o Spinner com esse comando:
new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, nomes); Onde o 3 parmetro nomes o ArrayList de Nomes. Abrao!
7.
DIEURE novembro 12, 2012
Responder
ola boa tarde,
tenho dois spinner, um contendo o estado GO eu preciso que ao selecionar o estado os dados das cidades fossem inseridos em um outro spinnerCidade; ser que tem
essa soluo
grato
Ederson Lima novembro 12, 2012
Responder
Bom, vamos l, digamos que existem 2 Spinners (spinnerEstado, spinnerCidade) e ambos estejam instanciados.
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
6/9 www.blog.edersonlima.net/?p=58
Seria algo mais ou menos assim:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
spinnerEstado.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

public void onItemSelected(AdapterView<?> parent, View v, int posicao, long id) {

//onde o parmetro "cidadesGO" seria um List<String> cidadesGO;
if (parent.getItemAtPosition(posicao).toString().equals("GO")) {

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cidadesGO);

ArrayAdapter<String> spinnerArrayAdapter = arrayAdapter;
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerCidade.setAdapter(spinnerArrayAdapter);

}

}

public void onNothingSelected(AdapterView<?> parent) {
}
});
E no seu caso presumo que seriam vrios ifs parecidos com o if da linha 6 para os outros estados!
Espero que tenha ajudado, no pude testar, mas o caminho por a! =)
8.
Felipe novembro 24, 2012
Responder
Ol
muito bom, no sabia como resgatar o nome do item selecionado.
Mas ainda tem um problema, usando o setOnItemSelectedListener ele executa o cdigo contido no listner logo quando roda a aplicao, j tentei usar
setOnItemClickListener para garantir de iria rodar somente quando clicado mas dessa ltima forma nem chegou a rodar.
Gostaria de saber se existe algo para fazer com que o cdigo contino no listner no rode de primeira no setOnItemSelectedListener, sem ganbiarras do tipo: uma
variavel para verifica se a proveira vez que est sendo executado haha.
Muito grato pelo artigo e disposio.
Ederson Lima novembro 26, 2012
Responder
Voc pode optar por usar o mtodo spn1.getSelectedItem().toString() onde voc resgatar o valor do Spinner apenas quando voc precisar! =)
9.
Samuel Frana dezembro 3, 2012
Responder
Ol Edson, parabns pelo post, me ajudou bastante aqui.
Cara minha dvida igual a da Edmara, voc pediu pra adicionar o cdigo spn1.setSelection(2); na linha 38, mas quando fao isso d erro. O emulador fala que a
aplicao deve ser encerrada.
O que pode ser isso? Obrigado!
Ederson Lima dezembro 4, 2012
Responder
O comando spn1.setSelection(2); diz que: o Spinner de nome spn1 deve marcar como selecionado o tem de ndice 2, ou seja, sendo o ndice 0 (zero) o 1
tem, ndice 1 (um) o 2 tem, ndice 2 (dois) o 3 tem e assim sucessivamente, o comando acima manda que o 3 tem seja o selecionado, mas se o Spinner tiver
menos que 3 tens a aplicao lanar o erro!
O cdigo que apresentei Edmara apenas um exemplo se eu quiser que o tem de nome Paulo seja o selecionado pelo Spinner.
1
2
3
4
5
for (int i = 0; i < nomes.size(); i++) {
if (nomes.get(i).toString() == Paulo) {
spn1.setSelection(i); //Assim voc procura pelo nome desejado
}
}
Nesse exemplo mando o ndice i que seria do tem que contm o nome Paulo.
At! =)
Trackbacks
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
7/9 www.blog.edersonlima.net/?p=58
No h trackbacks sobre este post.
Adicionar um Comentrio
Nome Name Obrigatrio
E-mail Email Obrigatrio
Website Website Optional
Message
Submit
Notifique-me dos comentrios seguintes por email.
Notifique-me de novos posts por email.
Sidebar
Pesquisa
Pesquisar por: Pesquisar
Publicidade
Calendrio
dezembro 2012
D S T Q Q S S
ago
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Categorias
Android (5)
Banco de Dados (4)
Design (4)
Empreender (1)
Games (1)
Inspirao (2)
Internet (6)
Java (10)
jQuery (4)
JSP (1)
Outros (8)
PHP (1)
XML (6)
Tags
Android ArrayList Aspect j Banco de Dados Bel Pesce Desenvolviment o de Games Design Empreendedorismo Folhas de Est ilo group by HTML IPv6 Java JComboBox jQuery JSP
Orient ao a Aspect o PHP Relat rio Thread Upload XML
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
8/9 www.blog.edersonlima.net/?p=58
Orient ao a Aspect o PHP Relat rio Thread Upload XML
Confira
Mais Vistos
Como utilizar o DataTables jQuery
Introduo ao Android - Parte 1 (Activity,...
Preencher Spinner com ArrayList
Trabalhando com sesses em Java Web JSP
Formatando nmeros e moedas em java
Criando 2 layouts (horizontal e vertical) em...
Como validar checkbox
Upload em JSP
Converter data no formato DATE do Banco de Dados
Validar o foco dos TextFields (Inputs) com jQuery
Recentes
Bel Pesce, Um exemplo de Empreendedorismo
Relatrio em HTML no Java SE
Consulta em Documentos XML com XQuery
XML Estilizao com Folhas de Estilo (XSL e CSS)
Esquemas XML (DTD e XML Schema)
Comentrios
Daniel em Converter data no formato DATE do Banco de Dados
Juninho em Como utilizar o DataTables jQuery
Ederson Lima em Como utilizar o DataTables jQuery
Ederson Lima em Preencher Spinner com ArrayList
Samuel Frana em Preencher Spinner com ArrayList
Aproveite
25/12/12 Preencher Spinner com ArrayList Ederson Lima Design, Programao e Tecnologia
9/9 www.blog.edersonlima.net/?p=58
Comentrios Recentes
Daniel on Converter data no formato DATE do Banco de Dados
Juninho on Como utilizar o DataTables jQuery
Ederson Lima on Como utilizar o DataTables jQuery
Ederson Lima on Preencher Spinner com ArrayList
Samuel Frana on Preencher Spinner com ArrayList
Twitter Status
No public Twitter messages.
Blogroll
Documentation
Plugins
Suggest Ideas
Support Forum
Themes
WordPress Blog
WordPress Planet
Arquivos
agosto 2012
julho 2012
maio 2012
novembro 2011
outubro 2011
setembro 2011
agosto 2011
julho 2011
maio 2011
maro 2011
Copyright 2012 Ederson Lima Design, Programao e Tecnologia. All rights reserved.
Designed by How To Start A Website. In collaboration with Email Marketing Software, SUV, and RPG Game Reviews.

Você também pode gostar