Utilizando MergeAdapter no Android
Introdução
MergeAdapter é uma nova feature introduzida no recyclerview:1.2.0-alpha02, habilitando a possibilidade de agrupar adapters e os exibir sequencialmente utilizando o mesmo RecyclerView
.
Integração
Para fazer o uso do Merge Adapter é necessário adicionar a dependência no build.gradle
do app ou módulo que irá fazer a utilização:
dependencies {
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha03'
}
até o momento deste texto, esta era a versão mais recente da biblioteca.
Hands On
Será utilizado o Valorant, jogo recém lançado pela Riot Games, como exemplo.
Neste exemplo, serão utilizados: um layout de header, uma lista de personagens e um banner, assim criando um adapter para cada view: HeaderAdapter
, PersonageAdapter
e BannerAdapter
.
Será necessário fazer o merge dos 3 adapters, utilizando o construtor do Merge Adapter e passando sua instância para o adapter do recyclerview
.
val headerAdapter: HeaderAdapter= ...
val personageAdapter: PersonageAdapter= ...
val bannerAdapter: BannerAdapter= ...
val mergeAdapter = MergeAdapter(headerAdapter, personageAdapter,
footerAdapter)
As views do recyclerview
, serão renderizadas de acordo com a ordem dos adapters passados no construtor do Merge Adapter
recyclerView.adapter = mergeAdapter
Obtendo o seguinte resultado:
Toda a implementação dos adapters, e dados utilizados estão disponíveis no Github.
É recomendável também utilizar que cada adapter faça a extensão de ListAdapters
para evitar chamar RecyclerView.Adapter.notifyDataSetChanged()
assim ao passar novos dados para um adapter só é necessário chamar adapter.submitList(list)
Originally published at https://dev.to on May 23, 2020.