GridView VS GridLayout em aplicativos Android

212

Eu tenho que usar uma grade para implementar o Photo Browser no Android. Então, eu gostaria de saber a diferença entre GridView e GridLayout .

Para que eu escolha o caminho certo.

Atualmente, estou usando o GridView para exibir as imagens dinamicamente.

Lakshmi Sreekanth Chitla
fonte

Respostas:

264

Um GridView é um ViewGroup que exibe itens na grade de rolagem bidimensional. Os itens na grade vêm do ListAdapter associado a esta exibição.

É isso que você deseja usar (continue usando). Como um GridView obtém seus dados de um ListAdapter, os únicos dados carregados na memória serão os exibidos na tela. Os GridViews, assim como os ListViews, reutilizam e reciclam suas visualizações para melhorar o desempenho.

Enquanto um GridLayout é um layout que coloca seus filhos em uma grade retangular.

Foi introduzido na API nível 14 e foi recentemente suportado na Biblioteca de suporte. Seu principal objetivo é resolver problemas de alinhamento e desempenho em outros layouts. Confira este tutorial se você quiser saber mais sobre o GridLayout.

Benito Bertoli
fonte
15
GridLayout também é um ViewGroup.
Dzmitry Lazerka
22
Eu nunca disse que não era. Eu estava apenas enfatizando o fato de que é um layout.
Benito Bertoli
16
@ Laki Um cenário seria se você deseja carregar um monte de imagens em uma grade como a formação. O uso do GridView carregaria apenas na memória as visualizações visíveis na tela. Considerando que, se você usar um GridLayout, precisará carregar todas as imagens que serão exibidas a qualquer momento, causando um erro de memória excedente na maioria dos dispositivos.
BigBen3216
15
Parece que a diferença básica é que o GridView pode acomodar apenas a largura uniforme da coluna. Layout da grade permite que você tenha conteúdo abrangendo 2 ou mais colunas. A disposição da grade permite projetar telas com conteúdo abrangendo tamanhos das colunas diferentes
Yasir
58
@laki Cenário um: Desenhe uma calculadora, GridLayout. Cenário dois: desenhe uma galeria, GridView.
Mario Velasco