网站开发提成,建设银行网站登录不上去,邹城网站网站建设,wordpress自动生成手机端目录
Paging 组件的意思
Paging 支持的架构类型
Paging 的工作原理
PositionalDataSource
PagekeyedDataSource
ItemKeyedDataSource
BoundaryCallback
Paging 组件的意思
分页加载是在应用程序开发过程中十分常见的需求#xff0c;Paging 就是 Google 为了方便 Andr…目录
Paging 组件的意思
Paging 支持的架构类型
Paging 的工作原理
PositionalDataSource
PagekeyedDataSource
ItemKeyedDataSource
BoundaryCallback
Paging 组件的意思
分页加载是在应用程序开发过程中十分常见的需求Paging 就是 Google 为了方便 Android 开发者完成分页加载而设计的一个组件它为几种常见的分页机制提供了统一的解决方案让我们可以把更多的精力专注在业务代码上。
Paging 支持的架构类型 网络
对网络数据进行分页加载是最常见的一种分页需求也是我们学习的重点。不同的公司针对分页机制所设计的 API 接口通常也不太一样但总体而言可以归纳为3种。Paging 组件提供了3种不同的方案以应对不同的分页机制。分别是 PositionDataSource、PageKeyedDataSource、ItemKeyedDataSource。 数据库
掌握了网络数据分页之后数据库数据分页将会容易很多无非就是数据源的替换。 网络数据库
出于用户体验的考虑我们通常会对网络数据进行缓存以便用户在下次打开应用程序时应用程序可以先展示缓存数据。我们通常会利用数据库对网络数据进行缓存这意味着我们需要同时处理好网络和数据库这两个数据源。多数据源会让业务逻辑变得更为复杂所以我们通常采用单一数据源作为解决方案。即从网络获取的数据直接缓存进数据库列表只从数据库这个唯一的数据源获取数据这里我们会学习 BoundaryCallback。 Paging 的工作原理 Paging 的3个核心类 PagedListAdapter RecyclerView 需要搭配适配器使用如果希望使用 Paging 组件适配器需要继承自
PagingListAdapter。 PagedList PagedList 负责通知 DataSource 何时获取数据以及如何获取数据。例如何时加载第一页/下一页第一页加载的数量、提前多少条数据开始执行预加载等从 DataSource 获取的数据将存储在 PagedList 中。 DataSource
在 DataSource 中执行具体数据载入工作数据可以来自网络也可以来自本地数据库。根据分页机制的不同Paging 为我们提供了3种 DataSource。数据的载入需要在工作线程中进行。 PositionalDataSource
适用于可通过任意位置加载数据且目标数据源数量固定的情况。例如请求时携带的参数为 start 2count 5则表示向服务端请求从第2条数据开始往后的5条数据。 DiffUtil
DiffUtil 用于计算两个数据列表之间的差异它只会更新需要更新的数据而不需要刷新整个数据源。 areItemsTheSame检测两个对象是否代表同一个 item areContentsTheSame检测两个 Item 是否存在不一样的数据 PagekeyedDataSource
适用于数据源以页的方式进行请求的情况 例如若请求时携带的参数为 page2pageSize5则表示数据源以5条数据为一页当前返回第二页的5条数据。 ItemKeyedDataSource
适用于当目标数据的下一页需要依赖上一页数据中最后一个对象中的某个字段作为 key 的情况此类分页形式常见于评论功能的实现。例如若上一页数据中最后一个对象的 key 为 9001那么在请求下一页时需要携带参数 since9001pageSize5则服务器会返回 key9001 之后的5条数据。 BoundaryCallback