DEV Community

João Gabriel
João Gabriel

Posted on

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] .(https://developer.android.com/reference/androidx/recyclerview/widget/MergeAdapter)

recyclerView.adapter = mergeAdapter

Obtendo o seguinte resultado:
RecyclerView Completo

Toda a implementação dos adapters, e dados utilizados estão disponíveis em:

GitHub logo 1jGabriel / Valorant-Merge-Adapter

Repositório para testes do merge adapter

Dica ao utilizar Merge Adapter

É 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)

Top comments (0)