实现 RecyclerView 上拉加载及自动加载

之前在《一步步打造自己的通用上拉加载布局》(如果没有看过,建议先看下这一篇)写到如何实现一个通用的上拉加载布局,本文将基于此进行扩展,实现 RecyclerView 的上拉加载及自动加载。

之前在《一步步打造自己的通用上拉加载布局》(如果没有看过,建议先看看这一篇)写到如何实现一个通用的上拉加载布局,本文将基于此进行扩展,实现 RecyclerView 的上拉加载及自动加载。

在之前的《一步步打造自己的通用上拉加载布局》已经提到,下拉刷新是将获取到的数据替换掉原有的数据,而上拉加载则是将获取到的数据插入到原来数据的末尾与底部提示加载的 View(如FooterView)之间,它们的展现方式的不同,使得上拉出来用于提示加载的 View,对于列表类视图如 或 而言,适合作为它们的 FooterView 而不适合封装到我们的上拉布局中。因此,我们需要继承 并实现对于 的扩展。

准备工作

由于在中已经把上拉的逻辑都封装好,因此这里主要是对的及自动加载的封装。在这里,对于带的 Adapter,我是通过包装原有的 Adapter 来实现,这样在使用的时候就不需要把原来的 Adapter 改成我们的上拉加载中的 Adapter,以减少对代码的侵入。这个 Adapter 如下,代码可不必细看,它是上拉加载的副产品,不是主要逻辑,于这里贴出只是交底。

接下来,继承自这个 Adapter,实现对 FooterView 添加,代码如下:

然后,实现一个默认的 。它的布局文件很简单,就是一个 ,如下:

它需要实现 接口,Java 代码如下:

上拉加载的 FooterView 扩展

前面这些,都只是对 FooterView 显示的准备工作。最后,才是对实现支持 RecyclerView 的扩展。如果你不需要这个FooterView,那么直接使用也是可以的。当然,这里的扩展过程也很简单,继承,然后重写方法,限定子 View 只能是 RecyclerView,再定义一个设置 FooterView 的方法,如此即可,代码如下:

这就完成了上拉加载的扩展。

实现自动加载

接下来实现自动加载,这个也很简单,思路就是监听的滚动,如果到达底部,则主动触发上拉加载。这里只需要定义一个表示是否需要自动加载的成员变量,添加其 setter 方法,然后修改上面重写的方法,给 RecyclerView 加一个监听器即可,如下:

这样就扩展完成了。

使用示例

以上代码已提交至 Github 上的 hi-loadmore 项目(地址:https://github.com/msdx/hi-loadmore),并且已发布至 bintray。使用方式如下:

首先添加 Gradle 依赖:

然后在布局中使用 作为 的父布局。接下来在 Java 代码中添加配置:

然后设置触发了上拉加载后的处理:

最后看运行结果:

项目地址:https://github.com/msdx/hi-loadmore

本文来自企鹅号 - 浩码农媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

用php做个简单的日历

存档: index.php 1 <html> 2 <head> 3 <title>日历</title> 4 <s...

2665
来自专栏我和未来有约会

Silverlight网络寻奇 at 090413

Silverlight网络寻奇 at 090413 Silverlight测试驱动开源项目 http://code.google.com/p/moq/ 很co...

3386
来自专栏源哥的专栏

如何判断是关闭还是刷新网页

我们在写js代码的时候,经常要判断网页是否被关闭了,如果是被关闭了,就执行某段代码,这个可以用HTML的onbeforeunload事件来执行一段js代码,但是...

734
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机中调用邮件发送接口

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

682
来自专栏vue学习

28、购物车结算页面-导航栏与地址选择布局

(1)老规矩,复制一份我们已经写好的test.vue页面初始化我们购物车页面cart.vue

723
来自专栏十月梦想

css3动画效果transition的用法

上述的例子的功能介绍:鼠标移入色块div,div的宽度则在3s内width变为500px;

524
来自专栏Android开发指南

Android如何缩减APK包大小

2665
来自专栏编程思想之路

按键事件处理

当按键来临时可能会有三种动作: ACTION_DOWN:按键被按下 ACTION_UP : 按键被释放 ACTION_MULTIPLE : 多次重复的按键事...

1905
来自专栏QQ会员技术团队的专栏

让页面滑动流畅得飞起的新特性:Passive Event Listeners

在不久前的Google I/O 2016 Mobile Web Talk中,Google公布了一个让页面滑动更流畅的新特性Passive Event List...

1987
来自专栏陈志兴的专栏

让页面滑动流畅得飞起的新特性:Passive Event Listeners

Google公布了一个让页面滑动更流畅的新特性Passive Event Listeners。该特性目前已经集成到Chrome51版本中。

5.8K0

扫码关注云+社区