Android Jetpack Paging3分页库的使用一(概述以及网络加载)

本文介绍了Android Jetpack Paging3库的使用,包括分页库的好处、架构设计以及如何加载并显示网络数据源的分页数据。文章详细讲解了如何定义PagingSource,设置PagingData流,创建RecyclerView适配器,并在用户界面中展示分页数据和加载状态。
摘要由CSDN通过智能技术生成

概述

使用分页库的好处

分页库包含以下功能:

  • 分页数据的内存中缓存。这可确保您的应用在处理页面数据时有效地使用系统资源。
  • 内置请求重复数据删除功能,确保您的应用有效地使用网络带宽和系统资源。
  • 可配置 RecyclerView 适配器,当用户滚动到已加载数据的末尾时会自动请求数据。
  • 对Kotlin协程和Flow以及LiveData的支持 。
  • 内置的错误处理支持,包括刷新和重试功能。

架构设计

分页库隶属于安卓推荐架构设计的一部分。该库的组件在应用程序的使用中,涉及到三层结构。

  • The repository layer
  • The ViewModel layer
  • The UI layer

在这里插入图片描述

上图描述了在每个层上运行的分页库组件,以及它们如何协同工作以加载和显示分页数据。

储存库层

存储库层中的主要分页库组件为 PagingSource。每个 PagingSource对象都定义一个数据源以及如何从该源中检索数据。PagingSource对象可以从任何单个源,包括网络源和本地数据库加载数据。

您可能会使用的另一个分页库组件是 RemoteMediatorRemoteMediator对象用以处理分层数据源,例如有本地数据库缓存的网络数据源。

ViewModel层

Pager组件提供了一个公共API,用于构造PagingData对象(基于PagingSource,在响应流中公开的实例)和 PagingConfig配置对象。

ViewModel图层连接到UI的组件是 PagingDataPagingData 目的是用于分页数据的快照的容器。它查询一个 PagingSource对象并存储结果。

UI层

UI层中的主要分页库组件是 PagingDataAdapterRecyclerView 用于处理分页数据的 适配器。

或者,您可以使用随附的 AsyncPagingDataDiffer 组件来构建自己的自定义适配器

**注意:**如果您的应用程序使用Compose for UI,请使用 androidx.paging:paging-compose 工件将Paging与UI层集成。要了解更多信息,请参阅的API文档 collectAsLazyPagingItems()

加载并显示网络数据源的分页数据流

定义数据源

第一步是定义一个 PagingSource实现以识别数据源。该PagingSourceAPI类包括 load() 方法,它必须重写,以指示如何从相应的数据源中检索分页数据。

PagingSource直接使用该类可将Kotlin协程用于异步加载。

Paging库还提供了支持其他异步框架的类:

选择键和值类型

PagingSource<Key, Value>有两个类型参数:KeyValue。键定义用于加载数据的标识符,值是数据本身的类型。

例如,如果您通过传递Int页码给 Retrofit,从网络加载的User对象的分页数据。

应该选择Int作为Key类型,User作为Value类型。

定义PagingSource

以下示例实现了一个 PagingSource按页码加载分页数据。该Key类型是IntValue类型 User

class ExamplePagingSource(
    val backend: ExampleBackendService,
    val query: String
) : PagingSource<Int, User>() {
   
  override suspend fun load(
    params: LoadParams<Int>
  ): LoadResult<Int
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值