【Android-Jetpack进阶】8、Paging 分页加载、MVVM 架构

八、Paging 分页加载

移动端请求后端接口时,数据库的内容很多,不可能一次性请求完,所以需要分页加载, Jetpack 的 Paging 库,为分页提供了统一解决方案。

数据源可能是网络接口或数据库,Paging 的工作原理如下:

在这里插入图片描述

  1. 在 RecyclerView 滑动过程中,会触发 PageListAdapter 类的 onBindViewHolder() 方法,将数据和 RecycleView Item 布局中的 UI 控件绑定。
  2. 当 RecyclerView 滑动到底部时,在 onBindViewHolder() 中调用 getItem() 方法,通知 PagedList 需加载更多数据。
  3. PagedList 根据 PageLIst.Config 通知 DataSourde 请求数据
  4. DataSource 请求数据后,交给 PagedList
  5. PagedList 将数据交给 PagedListAdapter 中的 DiffUtil 做对比
  6. RecyclerView 展示数据

8.1 PositionalDataSource 任意位置

用于从任意位置加载数据,加载固定数量,例如 start=2&count=5,通过 loadRange() 加载下一页。示例如下:

在这里插入图片描述

8.2 PageKeyedDataSource 分页

以页为请求单位,例如page=2&pageSize=5,通过 loadAfter() 加载下一页。示例如下:

在这里插入图片描述

8.3 ItemKeyedDataSource

下一页 依赖于 上一页最后一个对象 的某个字段做 key。例如上一页最后一个对象的 key 是 9527,则请求下一页时携带 since=9527&pageSize=5的参数,通过 loadAfter() 加载下一页。示例如下:

在这里插入图片描述

通常引入 Repository 层,封装数据库和网络请求,MVVM 架构图如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/127103808