Eu sei que RecyclerView
substituiu a funcionalidade do antigo ListView
e GridView
. Estou procurando um exemplo muito básico que mostra uma configuração de grade mínima usando RecyclerView
. Não estou procurando explicações longas sobre o estilo do tutorial, apenas um exemplo mínimo. Eu imagino que a grade mais simples que imita o GridView antigo consistiria nos seguintes recursos:
- várias células por linha
- visualização única em cada célula
- responde a eventos de clique
Respostas:
Resposta curta
Para aqueles que já estão familiarizados com a configuração de a
RecyclerView
para fazer uma lista , a boa notícia é que criar uma grade é basicamente o mesmo. Você apenas usa um emGridLayoutManager
vez de umLinearLayoutManager
quando configuraRecyclerView
.Se você precisar de mais ajuda do que isso, confira o exemplo a seguir.
Exemplo completo
A seguir, é apresentado um exemplo mínimo, semelhante à imagem abaixo.
Comece com uma atividade vazia. Você executará as seguintes tarefas para adicionar a
RecyclerView
grade. Tudo o que você precisa fazer é copiar e colar o código em cada seção. Mais tarde, você pode personalizá-lo para atender às suas necessidades.Atualizar dependências Gradle
Verifique se as seguintes dependências estão no seu
gradle.build
arquivo de aplicativo :Você pode atualizar os números de versão para o que for mais atual .
Criar layout de atividade
Adicione o
RecyclerView
ao seu layout xml.activity_main.xml
Criar layout de célula da grade
Cada célula da nossa
RecyclerView
grade terá apenas umaTextView
. Crie um novo arquivo de recurso de layout.recyclerview_item.xml
Crie o adaptador
É
RecyclerView
necessário um adaptador para preencher as visualizações em cada célula com seus dados. Crie um novo arquivo java.MyRecyclerViewAdapter.java
Notas
GridView
e é uma necessidade comum. Você pode remover esse código se não precisar.Inicializar RecyclerView na atividade
Adicione o seguinte código à sua atividade principal.
MainActivity.java
Notas
ItemClickListener
que definimos em nosso adaptador. Isso nos permite manipular eventos de clique na célulaonItemClick
.Acabado
É isso aí. Agora você poderá executar seu projeto e obter algo semelhante à imagem na parte superior.
Indo
Cantos arredondados
Colunas de ajuste automático
Um estudo mais aprofundado
fonte
recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
Embora eu goste e aprecie a resposta de Suragch , gostaria de deixar uma observação porque descobri que codificar o Adapter (
MyRecyclerViewAdapter
) para definir e expor o método ListeneronItemClick
não é a melhor maneira de fazê-lo, devido ao não uso do encapsulamento de classe corretamente. Portanto, minha sugestão é deixar o Adaptador manipular as operações de Escuta apenas (esse é o objetivo dele!) E separá-las da Atividade que usa o Adaptador (MainActivity
). Então é assim que eu definiria a classe Adapter:MyRecyclerViewAdapter.java
Observe que o
onItemClick
método agora definidoMyRecyclerViewAdapter
é o local em que você deseja codificar suas tarefas para o evento / ação recebido.Há apenas uma pequena alteração a ser realizada para concluir essa transformação: a Atividade não precisa
MyRecyclerViewAdapter.ItemClickListener
mais ser implementada , porque agora isso é feito completamente pelo Adaptador . Essa seria a modificação final:MainActivity.java
fonte
Activity
. Porque só é preciso clicar ouvinte pode saber sobre osActivity
pontos de vista e outrosFragments
,Activities
etc. O adaptador só pode enviar clique eventos para nível superior. Ele deve ter a interfaceItemClickListener
com tantos eventos, como muitas visualizações do adaptador de eventos podem produzir. Esta solução foi escrita ainda mais cedo: stackoverflow.com/a/40563598/2914140 .Você precisa definir o gerenciador de layout da sua reciclagem como Modo de layout de grade, para fazer isso Basta alterar seu código quando desejar Definir o RecyclerView LayoutManager:
Nota: substitua a contagem de colunas que deseja com ### HELP ###
fonte