
安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?
2019-04-02 00:12:52
如何评价百家号Lite小程序热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」
在安卓开发过程中,分页是一个老生常谈的话题,基本上有列表的地方就要处理下拉刷新和加载更多,而这个加载更多就不得不依靠分页来解决。
很多开发都觉得实际的移动开发过程中分页的压力都在后端,其实这种想法是不对的,分页方式和性能由后端决定没什么问题,但是选择什么样的框架来处理分页以便后期更好地维护才是安卓开发者应该考虑的问题。
如何单考虑显示层面,那么以前的RefreshListView以及XRecyclerView是一个不错的选择。使用这些组件虽然可以用很少的代码解决下拉刷新以及上拉加载更多的交互和回调问题,不过却没有与网络层以及数据库层形成一个统一的整体。
那么今天我们要讲的Jetpack组件集中的分页库Paging就很好的解决了这个问题,它不仅在交互层面与目前已有的任何列表组件形成了低耦合,还可以跟jetpack中的Room库很好的结合在一起,而后者可以基于网络请求框架Retrofit和数据库Sqlite解决了网络请求以及数据缓存问题。
在本单节我们先来看看Jetpack组件的分页原理,看看使用Paging是如何完成分页功能的。
在讨这个问题这前我们先看看以前我们是怎么做分页功能的,基本上就是在一个类似onRefresh或者onLoadMore方法中调用API,参数就传页数就可以了。不过使用了Paging你就会发现,整个调用链中看不到任何有关onLoadMore相关的方法,这让第一次接触这个分页框架的开发者无所适从。
那么Paging中的加载更多究竟在哪里呢?其实就在adapter里面,使用Paging库就必须让自己的adapter继承PagedListAdapter,而后者正是继承了RecyclerView的adapter。
在这个类中有一个方法便是getItem,我们顺着这个方法就会发现它调用了PagedListloadAround方法,而这个方法会间接调用PagedListtryDispatchBoundaryCallbacks,此方法会计算列表有没有滑动到最底部然后决定是否调用BoundaryCallback的onItemAtEndLoaded。
如果onItemAtEndLoaded被调用,那就说明列表已经滑到了最底端,我们可以在这个方法中调用API去请求更多数据。
值得一提的是,onItemAtEndLoaded方法中的参数并不是我们认为page和size,而是列表最底部的实体对象,那么根据这个实体对象如何分页以及分页中需要注意什么问题,由于篇幅有限我们留到下期再讲。
相关搜索
该话题由百家号作者互联网总线「简介:一根总线,贯穿互联。」
更多有关安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?的话题讨论请访问百家号Litex小程序关注作者-互联网总线
在安卓开发过程中,分页是一个老生常谈的话题,基本上有列表的地方就要处理下拉刷新和加载更多,而这个加载更多就不得不依靠分页来解决。
很多开发都觉得实际的移动开发过程中分页的压力都在后端,其实这种想法是不对的,分页方式和性能由后端决定没什么问题,但是选择什么样的框架来处理分页以便后期更好地维护才是安卓开发者应该考虑的问题。
如何单考虑显示层面,那么以前的RefreshListView以及XRecyclerView是一个不错的选择。使用这些组件虽然可以用很少的代码解决下拉刷新以及上拉加载更多的交互和回调问题,不过却没有与网络层以及数据库层形成一个统一的整体。
那么今天我们要讲的Jetpack组件集中的分页库Paging就很好的解决了这个问题,它不仅在交互层面与目前已有的任何列表组件形成了低耦合,还可以跟jetpack中的Room库很好的结合在一起,而后者可以基于网络请求框架Retrofit和数据库Sqlite解决了网络请求以及数据缓存问题。
在本单节我们先来看看Jetpack组件的分页原理,看看使用Paging是如何完成分页功能的。
在讨这个问题这前我们先看看以前我们是怎么做分页功能的,基本上就是在一个类似onRefresh或者onLoadMore方法中调用API,参数就传页数就可以了。不过使用了Paging你就会发现,整个调用链中看不到任何有关onLoadMore相关的方法,这让第一次接触这个分页框架的开发者无所适从。
那么Paging中的加载更多究竟在哪里呢?其实就在adapter里面,使用Paging库就必须让自己的adapter继承PagedListAdapter,而后者正是继承了RecyclerView的adapter。
在这个类中有一个方法便是getItem,我们顺着这个方法就会发现它调用了PagedListloadAround方法,而这个方法会间接调用PagedListtryDispatchBoundaryCallbacks,此方法会计算列表有没有滑动到最底部然后决定是否调用BoundaryCallback的onItemAtEndLoaded。
如果onItemAtEndLoaded被调用,那就说明列表已经滑到了最底端,我们可以在这个方法中调用API去请求更多数据。
值得一提的是,onItemAtEndLoaded方法中的参数并不是我们认为page和size,而是列表最底部的实体对象,那么根据这个实体对象如何分页以及分页中需要注意什么问题,由于篇幅有限我们留到下期再讲。
相关搜索
该话题由百家号作者互联网总线「简介:一根总线,贯穿互联。」
更多有关安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?的话题讨论请访问百家号Litex小程序关注作者-互联网总线
标签:

「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」热议话题订阅
方法1:微信扫描百家号Lite小程序码即可订阅热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」
方法2:微信搜索百家号Lite小程序名称进入,即可订阅热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」
方法3:微信网页访问即速商店,长按识别百家号Lite小程序码即可订阅热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」
百家号Lite小程序热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」由百家号Lite原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。
百家号Lite热议话题「安卓开发:关于Paging库中的分页原理,你都弄清楚了吗?」由百家号Lite开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。
百家号Lite小程序
更新时间:2019-04-02 00:12:52
悲天悯人的境界就是,
>湘西土家吊脚楼的故事
>“4·20”芦山地震5周年:龙门古镇展新颜
>“512”汶川地震:十年生死两茫茫
>“85度C”要凉了?被多家外卖平台下架!网友:就是因为她!母公司竟然这么说……
>“90后”方汉奇:用66年把冷板凳坐热
>“Hold住姐”:我终于hold住了自己的婚姻!
>“N字鞋”江湖:十亿财富与背后的乡土
>“POS机刷卡套现”有陷阱,老板莫名其妙被骗走了3000元
>“XXOO”是啥意思?我猜你是不懂的嘿嘿嘿
>“一代枭雄”曹操最经典的八首诗
>“一分一段表”你真的能看懂吗?
>“一夜情”最容易发生的十个地方, 排在榜首必去!
>“一夫当关,万夫莫开”,这样的险关隘口中国也就只有这几个
>“一秒之内变格格”谢依霖无预警宣布婚讯
>