0

RecyclerView - Android em Kotlin

Ana Guerra
Ana Guerra

-> Introdução:

Olá Devs.! Eu estava com algumas dificuldades de compreender a lógica do RecyclerView, mas com algumas leituras aos docs. do Android e algumas vídeo aulas, eu compreendi muito mais e agora estou cumprindo mais uma etapa, escrever um artigo e compartilhar conhecimento.


Vamos lá!!!



-> Recycler View o que é e características:

. Objetivo: Criar elementos em uma Lista, de forma mais dinâmica;


. Em uma tela de contatos, temos muitos contatos salvos, eles vão além dos limites do tamanho da tela. Para realizar esse processo, a forma mais performática e com menor consumo de energia é utilizar o RecyclerView;


. O RecyclerView desfragmentam o componente que sumirá da tela e o recicla para criar o próximo componente que está por vir. Como é mostrado na figura a seguir:


Noções básicas sobre RecyclerView. Uma visão de alto nível. Parte 1.



-> Principais Classes do RecyclerView:

1) RecyclerView:

  • É o viewGroup;
  • É adicionado no layout, em XML.


2) ViewHolder:

  • É o "fixador de visualização";
  • Objetivo: Faz o RecyclerView se vincular aos dados.

3) Adapter:

  • Objetivo: Utilizar os seus métodos (irei falar sobre eles na próximo tópico) para criar e dar funcionalidades ao ViewHolder.


4) LayoutManager:

  • Objetivo: Organizar os elementos na lista;
  • Pode ser definido no código, em Kotlin, ou no layout, em XML.



-> Implementar o RecyclerView, passo a passo:

. Lembre-se: A sua orientação é definida pelo LayoutManager, podendo ser dos seguintes tipos:


1 Passo -> Definir se o layout será linear ou em grade:


a) LinearLayoutManager:

  • Organiza os elementos em uma lista Unidimensional.


b) GridLayoutManager:

  • Organiza os elementos em uma lista Bidimensional.


I. Vertical: Itens da mesma linha possuem a mesma altura e largura. Já em linhas diferentes, podem variar quanto a altura.

II. Horizontal: Itens da mesma coluna possuem a mesma altura e largura. Já em colunas diferentes, podem variar quanto a largura.


2 Passo -> Criar o layout que possuirá o RecyclerView;


3 Passo -> Criar o item do RecyclerView em um layout separado. Este será usado como uma "forma de bolo" para os dados;


4 Passo -> Definir uma class Adapter em uma nova feature;


5 Passo -> Definir a class ViewHolder dentro da class Adapter.


Obs.: A forma mais usada de definir a class ViewHolder é internamente à class Adapter. Fique atento, em alguns exemplos são feitas classes separadas e isso é normal de acontecer, mas não é muito utilizado em projetos maiores.



-> Implementando a class Adapter:

  • O ViewHolder e o Adapter trabalham juntos para definir os dados que deram exibidos no RecyclerView;
  • Vinculação: É um termo que define o processo de associação de visualização dos dados.


1 Passo -> Definir o Adapter é criar 3 métodos:

1) onCreateViewHolder():

  • Sempre que precisar criar um novo ViewHolder, o RecyclerView o chama;
  • Cria o ViewHolder e o inicia.


2) onBindViewHolder():

  • Associa o ViewHolder aos dados;
  • Preenche o layout do fixador de visualização;


3) getItemCount():

  • O RecyclerView utiliza este método para ver o tamanho do conjunto de dados que serão inseridos no RecyclerView.



-> Finalização:

Este artigo, tem como finalidade apresentar um "passo a passo" básico de como criar um RecyclerView. Claro que não inseri os códigos internos aos métodos do Adapter, essa parte eu deixo para a sua compreensão. Por conta disso, lembre-se quais os objetivos dos métodos e a lógica de criação que apresentei aqui. Segue alguns links de aulas para complementar o conteúdo:


1) Alura: https://cursos.alura.com.br/course/fundamentos-android-kotlin/task/93930


2) YouTube: https://www.youtube.com/watch?v=EB32R-u_tac&t=3797s


3) Para leitura, os Doc's do Android: https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=pt-br


4) Para aplicativos de exemplo, sobre RecyclerView:

I. https://github.com/GuerraAna/app-musica-recyclerview

II. https://github.com/GuerraAna/app-netflix-clone-udemy

0
0

Comentários (5)

1
Francisco Rasia

Francisco Rasia

13/07/2021 20:49

Olá Ana, tudo bem?


Publiquei hoje o primeiro vídeo da série inspirada pelo seu artigo.


Como a proposta da série é fazer um mergulho profundo na RecyclerView, comecei com a criação de uma database usando Room, LiveData e a injeção de dependência com Koin. Nos próximos vídeos vou abordar a criação da RecyclerView e seus componentes, a integração com o LiveData e, finalmente, como otimizar a RecyclerView por meio do ListAdapter com DiffUtil.



Abraços e bons estudos!


Chico Rasia

1
Isaias Bueno

Isaias Bueno

24/06/2021 17:30

Excelente explicação, bem resumida e direta, parabéns!

0
Ana Guerra

Ana Guerra

23/06/2021 10:06

Olá Chico! Tudo ótimo e você?


Obrigada, ele é uma mão na roda para compreender RecyclerView e ter uma colinha quando se esquecer ou confundir algo. Imagina, eu não me incomoda nem um pouco, pode usar! Sem problemas... Tem esses dois repositórios que eu coloquei no meu GitHub, se quiser desenvolver projetinhos assim seria legal.


Outro ponto, comenta também que existem várias formas de organizar os códigos do RecyclerView, incluindo colocar o Adapter e o ViewHolder como classes separadas, mas eu andei analisando uns códigos e essa forma não é tão viável, porque o ViewHolder é utilizado apenas pelo Adapter, segundo o que me disseram.


Além disso, eu estava pensando em usar o SharedPreferences para um projeto de lista de contatos e depois Room... Seria uma boa ideia para o seu canal pegar um projetando pequeno assim e depois evoluindo, como você fez no app de contagem de xícaras de café, né?


São só dicas, com base no que penso. Sendo assim, bons estudos e tudo mais!! =)

1
Francisco Rasia

Francisco Rasia

23/06/2021 06:37

Oi Ana, tudo bem? Parabéns pelo artigo! Você se incomoda se eu usá-lo como referência para alguns tutoriais em vídeo sobre RecyclerView, cobrindo os conceitos básicos e a implementação passo-a-passo?

1
Adalberto Midon

Adalberto Midon

22/06/2021 21:24

Muito bacana Ana! Esse é um artigo que ajuda muito a compreender o RecyclerView de primeira. Sucesso!

Android Mobile Developer | Kotlin | Java | Agile Thinking| UX design | Estudante de Analise e Desenvolvimento de Sistemas

Brasil