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

16 篇文章 0 订阅
14 篇文章 0 订阅

地址

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

目录

  • 前言

  • 基本用法

  • API拓展

  • 显示细节补充和实现




前言


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


基本用法

1. 添加依赖库

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

2. 初始化控件

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

3. 调用

 
 
  1. refreshView.setOnLoadListener(new CustomRefreshView.OnLoadListener() {

  2.            @Override

  3.            public void onRefresh() {

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

  5.                //加载完成时,隐藏控件下拉刷新的状态

  6.                refreshView.complete();

  7.            }

  8.            @Override

  9.            public void onLoadMore() {

  10.                //上拉加载更多,添加你加载数据的逻辑

  11.                //加载完成时,隐藏控件上拉加载的状态

  12.                refreshView.complete();

  13.            }

  14.        });


API拓展

1.自动刷新

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

2.“无数据界面”添加

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

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

 
 
  1. 码2:refreshView.setCreateView(customView);

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

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

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

 
 
  1. refreshView.setErrorView();

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

 
 
  1. refreshView.setRefreshing(true);

4.加载失败重试机制

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

 
 
  1. @Override

  2.            public void onFail(TinaException exception) {

  3.                if (m > 1) {//m标记着是否是第一页数据,如果大于第一页时,页面数要减一,以保证数据不会遗漏加载

  4.                    size = size - 1;

  5.                    refreshView.onError();//处理加载失败的ui显示和点击ui重新加载的机制

  6.                } else {

  7.                    refreshView.setErrorView();//当第一页数据加载失败时显示的占位

  8.                }

  9.                refreshView.complete();//表示隐藏刷新的ui

  10.            }

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

 
 
  1. refreshView.onNoMore();


显示细节补充和实现

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

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

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

3 禁止下拉刷新

 
 
  1. refreshView.setRefreshEnable(false);

4. 禁止加载更多

 
 
  1. refreshView.setLoadMoreEnable(false);


笔记27 | WindowManager实现悬浮窗口总结

笔记26 | 总结Android的获取系统时间的几种方法

笔记25 | 通过自定义VIEW实现一个圆盘转动UI

笔记24 | 一个中间打开界面的动画

笔记23 | 复习了/而/做......而的几种循环用法



结束



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值