Visão geral da Paging Library Parte do Android Jetpack.
A biblioteca Paging ajuda a carregar e mostrar páginas de um conjunto de dados maior do armazenamento local ou da rede. Essa abordagem permite que o app use a largura de banda da rede e os recursos do sistema de modo mais eficiente. Os componentes da biblioteca Paging foram projetados para se ajustar à arquitetura de apps Android recomendada, integrar-se de forma limpa a outros componentes do Jetpack e fornecer suporte de alto nível ao Kotlin.
Benefícios do uso da biblioteca Paging
A biblioteca Paging inclui os seguintes recursos:
- Armazenamento em cache na memória dos dados paginados. Isso garante que seu app use recursos do sistema de maneira eficiente enquanto trabalha com dados paginados.
- Eliminação de duplicação de solicitações incorporadas, o que ajuda a garantir que seu app use a largura de banda da rede e os recursos do sistema de forma eficiente.
- Suporte de alto nível a corrotinas e fluxos do Kotlin.
- Compatibilidade integrada com tratamento de erros, incluindo recursos de atualização e repetição.
Configuração
Para importar componentes da biblioteca Paging para seu app Android, adicione as seguintes
dependências ao arquivo build.gradle do app:
Kotlin
dependencies { val paging_version = "3.4.2" implementation("androidx.paging:paging-common:$paging_version") // Jetpack Compose integration implementation("androidx.paging:paging-compose:$paging_version") }
Groovy
dependencies { def paging_version = "3.4.2" implementation "androidx.paging:paging-common:$paging_version" // Jetpack Compose integration implementation "androidx.paging:paging-compose:$paging_version" }
Arquitetura da biblioteca
Os componentes da biblioteca Paging operam em três camadas do app:
- Camada de repositório
- Camada
ViewModel - Camada da interface
Esta seção descreve os componentes da biblioteca Paging que operam em cada camada e como eles funcionam juntos para carregar e exibir dados paginados.
Camada de repositório
O principal componente da biblioteca Paging na camada de repositório é
PagingSource. Cada
objeto PagingSource define uma fonte de dados e como recuperar
dados dela. Um objeto PagingSource pode carregar dados de uma única fonte,
incluindo fontes de rede e bancos de dados locais.
Outro componente da biblioteca Paging que você pode usar é
RemoteMediator. Um
objeto RemoteMediator processa a paginação de uma fonte de dados em camadas, como uma
fonte de dados de rede com um cache de banco de dados local.
Camada ViewModel
O componente Pager fornece uma
API pública para criar instâncias de PagingData que são expostas em
fluxos reativos, com base em um objeto PagingSource e em um
objeto de configuração
PagingConfig.
O componente que conecta a camada ViewModel à IU é
PagingData. Um objeto PagingData
é um contêiner para um snapshot de dados paginados. Ele consulta um objeto
PagingSource e
armazena o resultado.
Camada de IU
A principal API da interface do usuário de paginação é collectAsLazyPagingItems(). Ele expõe itens paginados como uma lista de dados que podem ser facilmente consumidos pelos componentes de layout lazy do Compose, como LazyColumn e LazyRow.
Adicione a biblioteca androidx.paging:paging-compose para usar APIs compatíveis com o Compose
que permitem que a interface reaja automaticamente a cargas, atualizações e erros de dados sem
a necessidade de adaptadores ou lógica de diferenciação. Use a função de extensão
collectAsLazyPagingItems() em um Flow<PagingData>
para transmitir o LazyPagingItems retornado para items() em um LazyColumn.
@Composable fun MessageList(pager: Pager<Int, Message>) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } }
Para mais informações, consulte Conjuntos de dados grandes (paginação).
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Carregar e exibir dados paginados
- Migrar para a Paging 3
- Página da rede e do banco de dados