笔记28 | 学习一个简单好用的下拉刷新、上拉加载控件

地址

http://blog.csdn.net/xiangyong_1521/article/details/78431139

目录

  • 前言
  • 基本用法
  • API拓展
  • 显示细节补充和实现

前言

一个支持网络错误重试、无数据页(可自定义)、无网络界面(可自定义)的上拉加载更多,下拉刷新控件。


基本用法

1. 添加依赖库

compile 'com.zt.maven.widget:refreshview:1.0.0'

2. 初始化控件

动态加载刷新的空间,listview,xml...

3. 调用

refreshView.setOnLoadListener(new CustomRefreshView.OnLoadListener() {
            @Override
            public void onRefresh() {

                //下拉刷新,添加你刷新后的逻辑

                //加载完成时,隐藏控件下拉刷新的状态
                refreshView.complete();
            }

            @Override
            public void onLoadMore() {
                //上拉加载更多,添加你加载数据的逻辑

                //加载完成时,隐藏控件上拉加载的状态
                refreshView.complete();
            }
        });

API拓展

1.自动刷新

在上方法3后加: refreshView.setRefreshing(true);

2.“无数据界面”添加

如果首次刷新无数据,则需要显示无数据的界面,可以在你加载完成时,根据后端接口返回的数据(一定是请求第一页且返回无数据的情况下)添加相应的界面(上图gif中的“暂无数据”界面即控件中默认的”码1“,自定义的话只需把你的无数据界面写好,api调用时当作参数传递即可”码2“),并且依旧可以下拉刷新。

码1:refreshView.setEmptyView("暂无数据");
码2:refreshView.setCreateView(customView);

3.”无网络或加载失败界面“添加

如果项目中需要在无网络或者加载失败的情况下(根据接口数据返回)添加相应的ui给用户一个友好的交互,那么你可以直接调用,当然也可以写自己风格的ui

3.1. 使用引入控件中的默认加载失败(无网络)界面-效果如上图gif的重试界面

refreshView.setErrorView();

3.2. 使用自己写的加载失败(无网络)界面,这里的“重试按钮点击进行重新加载"的过程你只需在你的点击事件中加入

refreshView.setRefreshing(true);

4.加载失败重试机制

如果项目中需要支持加载失败时重试机制(这里指已经加载出数据但是在加载下一页数据失败时,点击底部变更的ui进行加载,详见上图gif加载更多时显示点击重试),当然控件也满足需求,调用时需要判断是否时大于第一页(注:有的公司接口规定从0开始,有的从1开始),这里还有一点要注意:如果当前不是首页的情况下加载失败,你需要将你的页码数减一,否则会跳过本页数据展示,用法如下:

@Override
            public void onFail(TinaException exception) {
                if (m > 1) {//m标记着是否是第一页数据,如果大于第一页时,页面数要减一,以保证数据不会遗漏加载
                    size = size - 1;
                    refreshView.onError();//处理加载失败的ui显示和点击ui重新加载的机制
                } else {
                    refreshView.setErrorView();//当第一页数据加载失败时显示的占位
                }
                refreshView.complete();//表示隐藏刷新的ui
            }

5.加载完成状态,显示”-- 没有更多了 --“

refreshView.onNoMore();

显示细节补充和实现

1. 控件默认支持线性布局

2. 变更下拉刷新的ui圆圈颜色

refreshView.getSwipeRefreshLayout().setColorSchemeColors(getResources().getColor());

3 禁止下拉刷新

refreshView.setRefreshEnable(false);

4. 禁止加载更多

refreshView.setLoadMoreEnable(false);

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2017-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博客

ExtJs十一(ExtJs Mvc图片管理之一)

图片管理要在两个地方使用:一是标签页内的图片管理,一是文章内容编辑时嵌套到插入图片的窗口内。因而,将图片管理做成一个扩展比较方便。当然,做成MVC模式也行,不争...

1223
来自专栏前端儿

前端代码乱糟糟?是时候引入代码质量检查工具了

为了统一团队的代码规范,除了一纸规范说明之外,还需要引入工具进行限制。虽说工具并不能完全实现规范中的规则,但至少能够在一定程度上缓解代码不统一的局面。

2461
来自专栏Jerry的SAP技术分享

如何将BSP应用配置成Fiori Launchpad上的一个tile

当我们通过WebIDE或者Eclipse的插件Team Provider把一个本地开发好的UI5应用部署到了ABAP Netweaver服务器上之后,我们可以将...

2157
来自专栏崔庆才的专栏

只会用Selenium爬网页?Appium爬App了解一下

2.3K5
来自专栏Web 开发

ubuntu学习手札——架设LAMP服务器

简单介绍一下,LAMP就是Linux + Apache + Mysql + Php,现在的服务器大部分都是基于这种方式架设的,我们这里的Linux就是ubunt...

911
来自专栏Java学习123

企业管理器控制台本地无法访问

2746
来自专栏软件测试经验与教训

Fiddler用法整理

读书与实践是获取知识的主要渠道,学习的权力只掌握在每个人自己手中,让学习成为一种生活的习惯,这比任何名牌大学的校徽重要得多!

1161
来自专栏pangguoming

在AngularJS应用中实现认证授权

在AngularJS应用中实现认证授权 在每一个严肃的应用中,认证和授权都是非常重要的一个部分。单页应用也不例外。应用并不会将所有的数据和功能都 暴露给所有的用...

4167
来自专栏技术博客

ExtJs十三(ExtJs Mvc图片管理之三)

现在要完成目录的编辑操作。因为目录的编辑只是改变目录名称,因而使用Cellediting插件就可完成工作。要完成这个不难,首先在目录树的定义中加入以下语句隐藏列...

983
来自专栏码生

实现更安全、高扩展的自定义键盘 非UIButton

自定义键盘的封装网上的例子比比皆是,有的封装的非常完美,直接pod 集成到项目中便可以简单的使用,可是为什么我还要自定义一个呢? 一不是不是为了显摆,二不是网...

972

扫码关注云+社区