Sitemap
Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Criando listas paginadas com Jetpack Compose

2 min readJan 23, 2021

--

Press enter or click to view image in full size

Olá a todos 😄, anteriormente publiquei um artigo demonstrando como utilizar o paging v3.

Ainda não existia suporte oficial para paginação no Jetpack Compose, mas a partir da versãocompose1.0.0-alpha06, a biblioteca paging-compose foi incluída.

Utilizei a mesma estrutura(PagingSource, Pager) do projeto anterior, sendo assim só mudarei a camada de apresentação de Fragment + ViewModel para Composables + ViewModel.

Todas as bibliotecas utilizadas(compose, paging), estão em alpha e não é aconselhável o uso em produção, e até o lançamento, o modo de implementação das mesmas pode mudar, este artigo foi feito em caráter de curiosidade/estudos.

Configurando o projeto

É necessário adicionar a dependência da biblioteca de paginação no build.gradle do nível de aplicação, em um projeto que já tenha o Jetpack Compose habilitado.

Implementação da obtenção dos dados

A explicação de cada uma das classes está no artigo anterior.

Utilizei a https://rickandmortyapi.com/ como fonte de dados.

PersonageDataSource

PersonageRepository

PersonageViewModel

Implementação camada de UI

  • No Jetpack Compose, LazyColumn e LazyRow como um substituto para RecyclerView para exibir uma lista de dados.
  • A biblioteca paging-compose vem com funções de extensão no LazyListScope que será usado pelos composables LazyColumn e LazyRow para exibir PagingData em uma lista.
  • É necessário converter o Flow<PagingData<CharacterUi>> em LazyPagingItems<CharacterUi>, que é uma extension function que transforma o fluxo de dados de paginação em itens de carregamento sob demanda.
  • nossa lista lazyCharacters então pode ser passada para a função items(), ela é uma extension function que retorna cada item da lista passada para que assim possamos atribuir a nossa view(CharacterItem) que representa um item único, e sua implementação é a seguinte:
Press enter or click to view image in full size
Demonstração da paginação

Considerações Finais

Essa nova maneira de fazer paginação me deixou bastante ansioso para poder utilizar, ainda mais com a substituição do RecyclerView e todo seu boilerplate(Adapter, ViewHolders) por LazyColumn e LazyRow, e também a substituição dos callbacks de scroll, pelo compose-paging.

O projeto usado no meus estudos está no meu Github.

Obrigado por ler até aqui, fiquem bem 🙏

--

--

Android Dev BR
Android Dev BR

Published in Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Responses (1)