Visão Geral do Projeto
App de listagem de usuários via API remota desenvolvido com a finalidade de estudos e focada no uso da biblioteca Paging Library 3 para implementação de paginação.
O projeto foi desenvolvido usando a estratégia de paginação simples somente de fonte remota (webservice) e de fonte remota + local (network + database) com RemoteMediator
.
As estratégias implementadas foram separadas em 2 branches: paging_source
e remote_mediator
.
Paginação Simples
Ao paginar diretamente da rede, a PagingSource
carrega os dados e retorna um objeto LoadResult
. A implementação da PagingSource
é transmitida ao Pager
usando o parâmetro pagingSourceFactory
.
Conforme novos dados são exigidos pela IU, o Pager
chama o método load()
da PagingSource
e retorna um fluxo de objetos PagingData
que encapsulam os novos dados. Normalmente, cada objeto PagingData
é armazenado em cache no ViewModel
antes de ser enviado para a IU para exibição.
Remote Mediator
Uma implementação de RemoteMediator
ajuda a carregar dados paginados da rede no banco de dados, mas não carrega dados diretamente na UI. Em vez disso, o app usa o banco de dados como source of truth, ou seja, o app só mostra dados que foram armazenados em cache no banco de dados. Uma implementação de PagingSource
(gerada pelo Room
) processa o carregamento de dados armazenados em cache do banco de dados na UI.