Paging - SMAXLYB/JetpackPractice GitHub Wiki
Paging
开发时需要以分页的形式加载大量数据,数据来源可以是本地或者网络,Paging按需加载,提升应用性能。
-
原理:
RecyclerView滑动触发PagedListAdapter中的onBindViewHolder()方法,当RecyclerView到达底部时,需要加载新的数据,在onBindViewHolder()中调用getItem(),通知PagedList载入更多数据,PagedList会根据PageList.Config中的配置通知DataSource获取数据,DataSource从网络/本地获取数据,交给PagedList,PagedList将数据交给PagedListAdapter中的DiffUtil进行比较,最后展示在RecyclerView中。
-
3种架构:
- 从网络加载
- PositionalDataSource 例:加载从第3条数据往后的5条数据
- PageKeyedDataSource 例:加载第2页的5条数据
- ItemKeyedDataSource 例:以上个字段为key,加载key后的5条数据
- 从数据库加载
- 先从网络加载,存储到数据库,然后从数据库加载 BoundaryCallback