Utilizando MergeAdapter no Android

João Gabriel
Android Dev BR
Published in
2 min readMay 23, 2020

--

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:

Demonstração do 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.

--

--