GridView no Android, Entendendo e Utilizando

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /GridView no Android, Entendendo e Utilizando

GridView no Android, Entendendo e Utilizando

Vinícius Thiengo
(15774) (26)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloCraftsmanship Limpo: Disciplinas, Padrões e ética
CategoriaDesenvolvimento Web
Autor(es)Robert C. Martin
EditoraAlta Books
Edição
Ano2023
Páginas416
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Tudo bem?

Na vídeo aula acima nós vamos, passo a passo, destrinchar por completo o componente visual GridView.

Componente Android que apesar de ser nostálgico, ainda é utilizado.

Principalmente em aplicativos que necessitavam do trabalho com grid antes mesmo do anúncio do RecyclerView no Google I\O 2014.

Digo isso, pois desde o lançamento do RecyclerView, tanto o trabalho com listas verticais quanto o trabalho com grids foi, mesmo que de maneira gradual, migrado para este componente visual e os seus principais LayoutManagers:

  • LinearLayoutManager;
  • WearableLinearLayoutManager;
  • StaggeredGridLayoutManager;
  • GridLayoutManager.

Thiengo, então não devo investir meu tempo no entendimento e domínio do GridView e consequentemente no domínio também do GridLayout?

Na verdade você deve sim investir tempo para dominar o GridView (e "por tabela" também investir tempo para o GridLayout).

Isso, pois não será incomum você encontrar projetos Android já em produção que fazem uso desses componentes.

Então para que você não fique perdido quando encontrar o GridView, por exemplo.

Para que isso não aconteça, invista sim tempo no estudo e domínio destes dois componentes de grid.

Diagrama do componente visual GridView

Correção: no diagrama acima é numColumns e não numColuns.

Mas eu confesso que hoje em dia, tanto para a construção listas verticais quanto para a construção de grids...

... para esses é melhor seguir com o RecyclerView junto ao LayoutManager correto.

Antes de finalizar e liberar você para a vídeo aula, preciso lhe passar alguns informes importantes justamente sobre a aula:

  • Dê atenção especial ao entendimento do atributos columnWithnumColumns;
  • Para entender o porquê da Interface ListAdapter é preciso também conhecer o BaseAdapter;
  • E se você quiser trabalhar com tabela, então pode ser melhor estudar o TableLayout, pois certamente será algo mais útil.

E... como estamos falando sobre um componente visual Android... não deixe de também investir tempo para o dominar o Material Design Android, a linguagem de design utilizada em todos os aplicativos mais atuais desta plataforma.

Então é isso.

A seguir deixo alguns bons links de outros artigos aqui do Blog, acompanhados de seus respectivos vídeos, que lhe colocarão em dia com o que há de novo no desenvolvimento de apps Android:

E caso você tenha o desejo de aprender a desenvolver apps Android, ou apenas evoluir nesta área, também com o conteúdo gratuito do Blog, então não deixe de acessar a lista exclusiva de estudos em:

E também não esqueça de se inscrever 📫 na lista de e-mails do Blog para receber os conteúdos de desenvolvimento Android em primeira mão... e também em suas versões em PDF (versões liberadas somente aos inscritos da lista de e-mails).

Se inscreva também no canal do Blog no YouTube para acompanhar as últimas novidades.

Surgindo dúvidas ou dicas, pode enviar abaixo na área de comentários que logo eu lhe retorno.

Obs. : o link para download do projeto apresentado na vídeo aula se encontra logo abaixo no artigo, na seção "Download".

Abraço.

Eclipse IDE vs Android Studio IDE

Apesar de o conteúdo da vídeo aula acima estar utilizando o Eclipse IDE 😱, tudo que é apresentado, tanto a parte teórica quanto a parte prática, é ainda válido nos dias de hoje com o desenvolvimento Android utilizando o Android Studio 😁.

Ou seja, independente da linguagem oficial (Java, Kotlin, C ou C++), IDE ou framework que você esteja utilizando, o conteúdo acima é ainda muito útil.

AndroidX

Apesar do conteúdo sobre o componente GridView ainda estar atual e ser importante para qualquer nível de desenvolvedor Android.

Apesar disso eu também recomendo, assim que finalizado o projeto em sua própria instalação de IDE, que você o migre para o AndroidX.

Algo que pode ser feito com poucos cliques, como apresentado no tutorial a seguir: Migrar para o AndroidX.

Fonte

Documentação oficial GridView Android

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

RelativeLayout no Android, Entendendo e UtilizandoRelativeLayout no Android, Entendendo e UtilizandoAndroid
AbsoluteLayout no Android, Entendendo e UtilizandoAbsoluteLayout no Android, Entendendo e UtilizandoAndroid
ScrollView e HorizontalScrollView no Android, Entendendo e UtilizandoScrollView e HorizontalScrollView no Android, Entendendo e UtilizandoAndroid
GridLayout no Android, Entendendo e UtilizandoGridLayout no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook

Comentários Blog (26)

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...
29/10/2016
Thiego segui toda a aula, tudo certo. Agora eu tenho 12 imagens e eu queria que cada uma chamasse uma activity, poderia me ajudar no código. Todas as imagens chamam o toast normal, como no vídeo.
Responder
Vinícius Thiengo (0) (0)
01/11/2016
Alberto, blz?

Utilize o listener de clique setOnItemClickListener() em seu GrifView.

Melhor do que explicar aqui veja o que fiz com o ListView nesse projeto: https://github.com/viniciusthiengo/GeoLocationAds/blob/master/app/src/main/java/br/com/thiengo/geolocationads/MainActivity.java

Mais precisamente acesse o método initResults(), como coloquei o setOnItemClickListener() no ListView. Você fará o mesmo com o GridView.

É importante que você entenda a lógica de negócio, digo, o uso dos objetos na list para corretamente acessar a posição que foi clicada e enviar os dados para a Activity de detalhe. Abraço
Responder
Alisson Faria (1) (0)
28/07/2016
Olá Thiengo blz?

Estou precisando implementar uma lista de tabelas, igual a tabelas de grupos de futebol com varias colunas, e que possua click nesses elementos das linhas. As colunas serão estáticas e o número de linhas dinâmico. Gostaria de saber a melhor maneira de se implementar e o que utilizar.
desde já Obrigado!
Responder
Vinícius Thiengo (0) (0)
01/08/2016
Fala Alisson, blz aqui.
Primeiro veja se já não existe um modelo de tabela fácil de utilizar em uma library aqui: https://android-arsenal.com/search?q=table

Caso nada, recomendo que utilize um GridView mesmo ou até um TableLayout (http://www.thiengo.com.br/tablelayout-no-android-entendendo-e-utilizando ) via Java API, dessa forma vc o terá com número de linhas dinâmico. Abraço
Responder
14/06/2016
Implementei seu post "Utilizando BaseAdapter Para Personalização Completa da ListView" (apesar de ainda não conseguir fazer a figura aparecer, conforme perguntei lá), mas não vi muita diferença de visual
Responder
Vinícius Thiengo (0) (0)
18/06/2016
Fala Daniel, blz?
Respondi seu comentário lá em BaseAdapter. Aqui em GridView, trabalhou com a definição de colunas? Somente assim verá o visual diferente. Abraço
Responder
Daniel Tibúrcio (1) (0)
08/06/2016
Thiengo, o que me recomenda para melhorar o visual de um app que já está pronto, apresentando os dados corretamente, mas de forma meio rudimentar, adicionando TextView em TableRow e TableLayout. Vou marcar você num post do grupo AndroidPro para você entender melhor o que quero fazer. Obrigado
Responder
Vinícius Thiengo (0) (0)
11/06/2016
Daniel, blz?
Vc tem mais ou menos uma ideia do que quer, digo, algum layout esboçado no papel ou APP similar? Abraço
Responder
Han Arantes (2) (0)
03/09/2015
Excelente conteúdo Thiengo! Seria legal se você fizesse um tutorial sobre GridView com Drag and Drop, pesquisei por aí e não achei nenhum tutorial de fácil entendimento
Responder
Vinícius Thiengo (0) (0)
03/09/2015
Fala Han Arantes, blz?
Vlw a dica. Já deu uma olhada nessas libs:

https://android-arsenal.com/search?q=grid

https://android-arsenal.com/search?q=drag

Abraço
Responder
RUAN ALVES (1) (0)
21/04/2015
Otima video aula, seguinte estou remodelando uma aplicação, e ela tem que rodar no 2.3 obrigatoriamente :( ... estava usando linearlayout para organizar os icones, e fica muito bagunçado, quero usar o gridView, mais quando uso, os meus primeiros icones, ficam meio brancos, é algum efeito dele, tem como tirar?
Responder
Vinícius Thiengo (1) (0)
21/04/2015
Fala Ruan, blz?
Esse efeito aparece somente no emulador ou no device real tb? Veja a possibilidade de utilizar o RecyclerView com um LayoutManager de Grid, se não me engano roda tb no Android 2.3. A vantagem do RecyclerVIew é que ele é mais eficiente, veja os vídeos abaixo para lhe ajudar se ainda não os conhece. Abraço

RecyclerView, Material Design Android - Parte 2 (http://www.thiengo.com.br/recyclerview-material-design-android-parte-2 )

Animação, onLongPress e GridLayoutManager em RecyclerView, Material Design Android - Parte 3 (http://www.thiengo.com.br/animacao-onlongpress-e-gridlayoutmanager-em-recyclerview-material-design-android-parte-3 )
Responder
Ruan Alves (1) (0)
22/04/2015
muito obrigado! é por que eu tinha que fazer em GridView por enquanto, poiso mesmo nem usava isso, o projeto ainda é em eclipse, e precisava  usar uma tecnologia antiga ... Eu sofri muito pra colocar HEADER e FOOTER, nossa sofrimento, mais vou testar o Recicly View ... :)
Responder
Ruan Alves (1) (0)
22/04/2015
Thiengo, estou fazendo uma tela, que tem um a GRID que suporta 3 colunas, quando viro a tela, ela tem que pegar 4 colunas, eu fiz outra pasta layout-land, coloquei o arquivo la e com o numeros de colunas 4, mais ele nao pega dijeito nenhum, tem outra maneira? um script?
Responder
Vinícius Thiengo (1) (0)
22/04/2015
Ruan, tem outra maneira sim, alias bem mais fácil, vc continua com o mesmo layout, o que acontece é que quando o device é rotacionado e consequentemente muda a orientação da tela, se seu APP não estiver com o configChanges configurado (recomendo não utilizá-lo) a Activity será reconstruída e seu Grid tb será, então no algoritmo vc consegue verificar se o device está portrait ou landscape, nesse caso verificando que está em landscape vc cria o Grid para trabalhar com a configuração de 4 colunas, caso em portrait vc cria ele para trabalhar com 3 apenas. Em nenhum dos casos é necessário modificar layouts, somente a inicialização do Grid é que muda. Dê uma olhada nos links abaixo para criar seu script de verificação de orientação de tela. Abraço

http://stackoverflow.com/questions/3674933/find-out-if-android-device-is-portrait-or-landscape-for-normal-usage

http://stackoverflow.com/questions/2795833/check-orientation-on-android-phone
Responder
Ruan Alves Ferreira de Bessa (1) (0)
23/04/2015
Amigo vlw mesmo! mais descobri que o erro era no manifest, pois é um sistema já existênte cheio de erros. Quando viro minha GRIDVIEW para vertical, os valores dos icones das posição mudam, vc sabe me dizer o que pode ser? .... cara to adorando suas video aulas, são de grande ajuda ... vlw mesmo
Responder
Vinícius Thiengo (1) (0)
24/04/2015
Ruan, quando diz "os valores dos icones das posição mudam" vc diz que muda o valor / caminho de acesso aos ícones, ou seja, outros são abertos ou nenhum? Não vi isso ainda, o problema pode ser mesmo o que lhe informei no comentário anterior sobre o configChanges. Veja se nas Activities tag em seu AndroidManifest não há alguma com o atributo configChanges. Abraço
Responder
Guilherme (1) (0)
26/03/2015
Fala Thiengo blz?
Me tira uma duvida por favor:
Carrego uma Gridview com dados do banco porem ao clicar em algum item da linha eu preciso pegar o ID que fica sempre na coluna 1 como faço isso?
Responder
Vinícius Thiengo (0) (0)
26/03/2015
Fala Guilherme, blz sim.
No caso o que pode fazer é o seguinte, carregando os dados do bd vc os coloca em uma lista do tipo da classe dos itens que estão no bd e nessa classe terá o campo do id. Essa lista será associada ao adapter que será vinculado ao GridView, assim vc coloca o listener de clique no GridView, nesse listener é informado como parâmetro de entrada a posição do item que foi clicado, logo é a mesma posição do item na lista que foi associada ao adapter, trabalhando com essa lista sendo uma variável de instancia na classe que tem o GridView, vc pode acessar o item na posição clicada e então dar um getId() para obter o id. Abraço
Responder
Ricardo (1) (0)
09/03/2015
Thiengo blz, Cara eu queria fazer uma forma que conforme captura imagem ou pega da galeria isso ja fiz ai retorno em bitmap ,queria ir adicionando no grid tem alguma ideia de como fazer?
Responder
Vinícius Thiengo (0) (0)
10/03/2015
Fala Ricardo, blz sim.
Veja se é isso que está querendo dizer (http://www.thiengo.com.br/imageloader-com-a-lib-volley-no-android ou http://www.thiengo.com.br/carregamento-e-cache-de-imagem-com-universal-image-loader-no-android ), carregamento de imagem no grid ao invés de lista em seu caso. Abraço
Responder
daviola.menezes (0) (0)
02/02/2015
Ou ? quest?o de gosto e Layouts msm?
Responder
Vinícius Thiengo (0) (0)
03/02/2015
Fala Daviola, blz?
Na verdade trato como questão de projeto, quando desenvolvendo mobile temos de pensar o tempo todo em otimização devido aos poucos recursos disponíveis, se utilizar o GridLayout se encaixa no design desenvolvido em projeto para a APP e tb é a melhor opção quanto a otimização, então é ele que devemos utilizar. Hj em Android temos de ficar atentos com o problema de Memory Leak, que é quando utulizamos mtas entidades em nossa APP, digo, mtos objetos (incluindo cada view do layout) e vazamos o limite permitido de dados na memória... por isso temos de ter cuidado no momento de escolher as views do layout. Abraço
Responder
daviola.menezes (0) (0)
02/02/2015
Eae Vinicius ? recomendado pra mostrar um grid de fotos com aquele checkbox pra selecionar? Ou ? quest
Responder
Vinícius Thiengo (0) (0)
03/02/2015
Tb, vc pode mudar a cor do box ao invés de ter mais uma view (o checkbox) somente para mostrar que a imagem foi selecionada. Abraço
Responder
02/08/2014
Muito Obrigado, agora sou um "FAN" do seu site.
=)
Responder