Spinner (ou Select) no Android, Entendendo e Utilizando

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog. Você receberá um email de confirmação. Somente depois de confirma-lo é que poderei lhe enviar os conteúdos exclusivos.

Email inválido.
Blog /Android /Spinner (ou Select) no Android, Entendendo e Utilizando

Spinner (ou Select) no Android, Entendendo e Utilizando

Vinícius Thiengo
(17566) (17) (2) (2)
Go-ahead
"Não podemos estar em modo de sobrevivência. Temos de estar no modo de crescimento."
Jeff Bezos
Kotlin Android
Capa do livro Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia
TítuloDesenvolvedor Kotlin Android - Bibliotecas para o dia a dia
CategoriasAndroid, Kotlin
AutorVinícius Thiengo
Edição
Ano2018
Capítulos19
Páginas1035
Acessar Livro
Treinamento Oficial
Android: Prototipagem Profissional de Aplicativos
CursoAndroid: Prototipagem Profissional de Aplicativos
CategoriaAndroid
InstrutorVinícius Thiengo
NívelTodos os níveis
Vídeo aulas186
PlataformaUdemy
Acessar Curso
Receitas Android
Capa do livro Receitas Para Desenvolvedores Android
TítuloReceitas Para Desenvolvedores Android
CategoriaDesenvolvimento Android
AutorVinícius Thiengo
Edição
Ano2017
Capítulos20
Páginas936
Acessar Livro
Código Limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas599
Acessar Livro
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Conteúdo Exclusivo
Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Opa! Blz?

Dando continuidade a série de vídeos sobre componentes visuais no Android, nesse vídeo apresento o componente Spinner que é a versão do Select (HTML) ou ComboBox (JAVA desktop) no Android. Aparentemente, por causa da tag <select> no HTML, pode vir a ideia de que implementar o conteúdo de um Spinner é trivial, mas não, fácil é sim, porém não tanto quanto no HTML. A grande vantagem do Spinner no Android ante as suas variações em outras linguagens é  possíbilidade de personalização dos itens do Spinner (colocando imagens, textos estilizados, ...) sem a necessidade de uso de outra tecnologia (HTML e JavaScript, por exemplo). Na APP do blog eu utilizo spinner, pois tenho alguns formulários e muito provavelmente você vai utilizá-lo se sua APP tende a ter formulários. Mas enfim, vou evitar muitas delongas e deixar você assistir ao vídeo.

O link para download do projeto se encontra logo abaixo no post.

Se você não conhece a class BaseAdapter, segue post que fiz explicando essa:

Utilizando BaseAdapter Para Personalização Completa da ListView

Páginas oficiais no Android:

Página da classe Spinner no site oficial do Android

Página do recurso Spinner no site oficial do Android

Página do listener OnSelectedItemListener no site oficial do Android

Segue imagem esquema do componente visual Spinner:

Spinner (ou Select) no Android, Entendendo e Utilizando

Vlw.

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Relacionado

ImageSwitcher no Android, Entendendo e UtilizandoImageSwitcher no Android, Entendendo e UtilizandoAndroid
ViewPager no Android, Entendendo e UtilizandoViewPager no Android, Entendendo e UtilizandoAndroid
Utilizando a Câmera do Smartphone em Sua APP AndroidUtilizando a Câmera do Smartphone em Sua APP AndroidAndroid
Style, String, Dimen, Color e WindowNoTitle no Android, Entendendo e UtilizandoStyle, String, Dimen, Color e WindowNoTitle no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook (3)

Comentários Blog (14)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Robson (1) (0)
29/09/2017
Thiengo blz meu caro!!!!?
Então tô com um Spinner que tem uns 500 itens e isto dificulta o usuário na seleção, existe como fazer uma "Busca" ou "Filtragem" de forma a otimizar o trabalho do usuário? os dados já vem ordenados mais como são muitos registros isto não é o bastante.
Responder
Vinícius Thiengo (1) (0)
04/10/2017
Robson, tudo bem aqui.

Tente o AutoCompleteTextView, com ele é possível, e mais viável, trabalhar todas essas 500 opções que o usuário tem.

Mais sobre no link a seguir: https://www.thiengo.com.br/autocompletetextview-no-android-entendendo-e-utilizando

Abraço.
Responder
Robson (1) (0)
05/10/2017
Valeu Thiengo!
Mais cara bem que poderiam fazer algo para o Spinner, o AutoComplete o usuário pode digitar algo por exemplo tenho minha lista com dados de 1001001 a 1001100 o cara digita apenas 100 e então eu tenho agora que validar isto, no spinner só validava se estava vazio.
Responder
Robson (1) (0)
05/10/2017
Cara mais aquelas sugestões que vc mostrou no Android Arsenal acho que vai rolar, valeu!!!!!
Responder
Filipe Braga (1) (0)
03/04/2017
Prezado Vinícius,

Achei interessante sua abordagem aqui. Já tenho feito algum desenvolvimento com AndroidStudio e em uma das minhas aplicações estou utilizando três Spinner, devidamente declarados os atributos, associado as View's e feito o Cast.

O problema é que o terceiro Spinner não está selecionando nenhum item, apesar deles aparecerem (e atualizarem, corretamente). Os Spinner's tem o mesmo código e funcionam de maneira encadeada (a escolha de uma opção no Spinner1 afeta as opções mostradas no 2 e assim em diante). A única diferença entre eles é que o 3 (que não está selecionando) tem mais de 20 itens.

Testei com um Toast no 'onItemSelected', mas sequer a mensagem aparece quando seleciono um item no Spinner3.

Abraço
Responder
Vinícius Thiengo (0) (0)
08/04/2017
Filipe, tudo bem?

Alguma mensagem de erro ou warning é apresentada nos logs do Android Studio? Certificou-se de que esse terceiro listener não está vinculado a nenhuma listener dos Spinners anteriores, algo que afetaria o funcionamento dele?

Abraço.
Responder
Alan Lucena (1) (0)
21/03/2017
Professor boa tarde! Por um acaso senhor notou algum "bug" no spiner do Android Studio 2.3, pois o meu a letra fica somente branca e os layouts que crio aparecem com background cinza escuro, existe alguma solução para este spiner?
Responder
Vinícius Thiengo (0) (1)
24/03/2017
Alan, tudo bem?

Não notei o Bug, até mesmo tive de utilizar o Spinner essa semana. Uma maneira de mudar as cores dele é mudando o tema que está sendo utilizado.

Provavelmente seu App está utilizando o AppTheme que herda de Theme.AppCompat, certo? Para confirmar, vá no AndroidManifest e veja se na tag da Activity do Spinner há um atributo android:theme=?@style/AppTheme?, caso não, a Activity está herdando o tema da <application>, que provavelmente deve ser AppTheme.

No arquivo /res/values/styles.xml você consegue alterar isso, para, por exemplo, ao invés de herdar de Theme.AppCompat passar a herdar de Theme.AppCompat.Light ou de Theme.AppCompat.Light.DarkActionBar, ou de ? Há vários.

Uma outra maneira que não é simples e que também pode tirar um pouco de performance de seu aplicativo, ao menos na parte de Spinner, é criando um adapter customizado e então fornecendo o XML dos itens, XML criado por ti com suas cores de fundo e texto. Abraço.
Responder
Alan Lucena (1) (0)
26/03/2017
Isso mesmo que o senhor disse professro "AppTheme". As letras de fundo estão brancas e se usar um background branco as letras somem por enquanto resolvi o problema de uma outra forma, mas não esta do jeito que quero, mas vou trocar os temas para dar uma analisada, por enquanto muito obrigado pelas orientações, tenha uma ótima semana.
Responder
28/11/2014
Salve Salve Thiengo!!! parabéns e sempre acompanho seu BLOG, principalmente agora que estou iniciando, estou com uma dúvida estou trabalhando com um menu DRAWER e ele utliza fragmentos e não activity, como eu faria para inserir ess SPINNER no fragment? se puder ajudar... vlwsss
Responder
Vinícius Thiengo (1) (0)
29/11/2014
Fala Fernando, blz?
Então, na verdade o fragment é quase que a mesma coisa que a Activity quando vamos trabalhar com ele, tem o próprio layout, próprio ciclo de vida, ... No caso vc pode colocar esse spinner no layout do fragment via Java code, sem o xml, ou pelo xml mesmo, que no caso recomendo o xml para separar a view da lógica. O fragment tem um método onCreateView() que é responsável por gerenciar a inicialização do layout do fragment... dê uma olhada nos dois vídeos abaixo sobre fragment, acho que vão lhe ajudar bastante:

Fragments no Android, Trabalhando com Múltiplas Activities (http://www.thiengo.com.br/fragments-no-android-trabalhando-com-multiplas-activities )

Ciclo de Vida e Otimização de Fragments no Android (http://www.thiengo.com.br/ciclo-de-vida-e-otimizacao-de-fragments-no-android )

Abraço
Responder
22/10/2014
Thiengo, tudo bem? Primeiramente parabéns pelas ótimas vídeo-aulas que você disponibiliza! São muito boas!
Estou com um projeto que utiliza Spinner para cadastramento de dados. Porém, preciso utilizar o Spinner também para a área de update desses dados.
De que forma eu mantenho um dado selecionado de acordo com seu id no Spinner?
Vi que ele possui o método setSelection(), mas nesse método eu tenho que informar a posição do array que quero selecionar e isso não me atende. Precisaria informar o id do dado para que ele exibisse. Poderia me ajudar?
Responder
Vinícius Thiengo (1) (0)
22/10/2014
Fala Érick, blz?
Então, vc terá de colocar uma lista ou array no spinner, certo? Ai depois disso vc quer deixar já selecionado a opção escolhida anteriormente, certo? Vc está utilizando uma classe Adapter criada por vc para preencher o spinner? Se estiver ou não vc apenas precisa saber a posição do elemento selecionado na lista ou no array, vc pode fazer essa verificação em um loop antes de preencher o spinner, depois que já tiver a posição guardada em uma variavel do tipo int vc pode preencher o spinner e utilizar o setSelection() com a posição guardada anteriormente. Ve se assim vai. Abraço
Responder
23/10/2014
Isso mesmo Thiengo! Muito obrgiado!
Eu possuo uma classe adapter e populo o spinner com uma lista. Daí consegui resolver fazendo um loop na lista buscando pelo id desejado e verificando em que posição se encontra esse id. Após encontrar a posição, eu utilizei o setSelection() e deu certinho.
Muito obrigado pela ajuda! Forte abraço!
Responder