Dicas para uso profissional do RecyclerView. Parte 1

Dicas para uso profissional do RecyclerView. Parte 1


Eu decidi escrever este artigo porque percebemos que muitos desenvolvedores cometem erros ao usar o RecyclerView , embora o Google o tenha lançado há algum tempo.


Os pontos descritos aqui foram mencionados em vários relatórios e materiais no Google Devs.


Neste artigo, descreverei brevemente os pontos principais deste vídeo e você não precisa assisti-lo agora. Mas eu recomendo assistir na íntegra depois de ler o artigo.


1. atributo setHasFixedSize


Defina o atributo recyclerView.setHasFixedSize(true) quando recyclerView não planeja redimensionar seus filhos dinamicamente.


Como resultado, o recyclerView não será redesenhado toda vez que os dados forem atualizados no item de lista, esse item será redesenhado.


2. Clique em ouvinte


Defina o manipulador de cliques em onCreateViewHolder(...) .


Sempre que um usuário clica em um item da lista, o viewHolder relata a posição do adaptador em que esse clique ocorreu ( vh.getAdapterPosition() ). Isso é importante porque os elementos podem ser movidos dentro do adaptador e os componentes de view associados não serão recriados.


Como resultado, no momento em que o componente de view é criado, pode acontecer o seguinte: o item da lista estará, digamos, na posição 2, mas quando o usuário clicar nele, o elemento já estará na posição 5. Portanto, usando o método vh.getAdapterPosition() garante a obtenção do índice de lista correto.


3. Usando vários tipos de componentes de exibição


Retorne diretamente o layout se você usar diferentes tipos de componentes de view (por exemplo, R.layout.view_one ).


Se o seu adaptador suportar vários tipos de componentes de view , os onCreateViewHolder getItemViewType e onCreateViewHolder serão parecidos com a imagem abaixo. Você precisa escrever uma switch dentro do método onCreateViewHolder para implementar a lógica necessária para os tipos correspondentes de componentes de view .


GetItemViewType padrão e onCreateViewHolder


Mas, em vez desses tipos, você pode retornar o layout imediatamente. Isso salvará você do código onCreateViewHolder no onCreateViewHolder :


Carregado emCreateViewHolder


Esta técnica não pode ser usada constantemente, porque às vezes você pode precisar de uma lógica mais complexa dentro de cada layout selecionado para casos diferentes. Mas se esse não for o seu caso, o layout retornado é o caminho certo para trabalhar com vários tipos de componentes de view .


4. DiffUtil


Use o DiffUtil para adicionar novos dados ao RecyclerView .


Sempre que os dados no recyclerView alterados, a maioria dos desenvolvedores chama o método notifyDataSetChanged() para exibir os dados atualizados na interface do usuário. Eles simplesmente não sabem que esse método DiffUtil muitos recursos e é aqui que o DiffUtil lida com muito mais eficiência.


DiffUtil é uma classe de utilitário que pode calcular a diferença entre duas listas como uma lista de atualização, que depois converte a primeira lista na segunda. Ele pode ser usado para calcular atualizações no adaptador recyclerView . Para usar o DiffUtil , você deve implementar o DiffUtil.Callback , que possui vários métodos necessários para implementar a lógica do DiffUtil :


Métodos públicos DiffUtil.Callback


A maior vantagem do DiffUtil é que, no RecyclerView você pode atualizar o texto específico no TextView elemento específico, em vez de redesenhar a lista inteira. Para fazer isso, você precisa implementar o método onChangePayload em DiffUtil.Callback . Há um artigo muito bom sobre esse assunto.


Na segunda parte, veremos outras dicas para fazer bom uso do RecyclerView .


→ Dicas para uso profissional do RecyclerView. Parte 2

Source: https://habr.com/ru/post/pt425945/


All Articles