SmartRefreshLayout使用中遇坑总结

您所在的位置:网站首页 下拉可以刷新暂 SmartRefreshLayout使用中遇坑总结

SmartRefreshLayout使用中遇坑总结

2024-07-17 05:35:47| 来源: 网络整理| 查看: 265

实习过程中,需要实现一个下拉刷新和上拉加载更多的页面,Gollgle。在开发过程中遇到好多坑,主要还是因为自己经验不足。 先放该第三方库的GitHub地址 https://github.com/scwang90/SmartRefreshLayout/tree/master 一、因为该第三方库还比较智能,提供了很多方法,因此对每个方法的具体功能要首先理解清楚,例如,该库提供了很多加载完成时使用的方法,但是每一个方法是针对不同情况使用的。就因为在开始时没有对这些重载的每一个finishLoadMore()方法好好理解,在开发过程中浪费了好多时间。还有就是setNoMoreData(true)这个方法,在没有更多数据,即最后一页时调用,并将参数传为 true。最重要的是要记得在不是最后一页时,记得要把状态恢复过来,即将参数传为 false. 下面是在此次开发中用到的比较重要的方法,

/* 这几个方法是比较重要的 */ // 这两个方法是在加载成功并且还有数据的情况下调用的 refreshLayout.finishRefresh();//结束刷新 refreshLayout.finishLoadMore();//结束加载 // 这两个方法是在加载失败时调用的 refreshLayout.finishRefresh(false);//结束刷新(刷新失败) refreshLayout.finishLoadMore(false);//结束加载(加载失败) // 这个方法是在最后一页,没有更多数据时调用的,会在页面底部标记没有更多数据 refreshLayout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据 1.0.4 // 这个方法最重要,当在最后一页调用完上一个完成加载并标记没有更多数据的方法时,需要将refreshLayout的状态更改为还有更多数据的状态,此时就需要调用此方法,参数为false代表还有更多数据,true代表没有更多数据 refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态 1.0.5 // 这里需要注意这几个结束加载和结束刷新的方法,分好几种使用的情况,可以在不同的情况下使用 /** * 完成刷新 * @return RefreshLayout */ RefreshLayout finishRefresh(); /** * 完成刷新 * @param delayed 开始延时 * @return RefreshLayout */ RefreshLayout finishRefresh(int delayed); /** * 完成加载 * @param success 数据是否成功刷新 (会影响到上次更新时间的改变) * @return RefreshLayout */ RefreshLayout finishRefresh(boolean success); /** * 完成刷新 * @param delayed 开始延时 * @param success 数据是否成功刷新 (会影响到上次更新时间的改变) * @return RefreshLayout */ RefreshLayout finishRefresh(int delayed, boolean success); /** * 完成加载 * @return RefreshLayout */ RefreshLayout finishLoadMore(); /** * 完成加载 * @param delayed 开始延时 * @return RefreshLayout */ RefreshLayout finishLoadMore(int delayed); /** * 完成加载 * @param success 数据是否成功 * @return RefreshLayout */ RefreshLayout finishLoadMore(boolean success); /** * 完成加载 * @param delayed 开始延时 * @param success 数据是否成功 * @param noMoreData 是否有更多数据 * @return RefreshLayout */ RefreshLayout finishLoadMore(int delayed, boolean success, boolean noMoreData); /** * 完成加载并标记没有更多数据 * @return RefreshLayout */ RefreshLayout finishLoadMoreWithNoMoreData();

二、对头布局和底部局界面的修改。 可以有两种修改方法,一个是在资源文件中将默认的值改了,另一个是在JAVA代码中改。此处我们看下这些标记文字设置的源码。

// 这是REFRESH_HEADER_PULLING的初始化 // 这是为REFRESH_HEADER_PULLING赋值,我们可以看出,如果刚开始REFRESH_HEADER_PULLING为空的话,就为它赋值为 //context.getString(R.string.srl_header_pulling),默认的是“下拉可以刷新”,因此如果,我们想修改文字, //可以有两种方法,一,我们为REFRESH_HEADER_PULLING赋值,即在代码中写ClassicsHeader.REFRESH_HEADER_PULLING = "下拉释放刷新", //二,在XML文件中将R.string.srl_header_pulling对应的值改为“下拉释放刷新” public static String REFRESH_HEADER_PULLING = null;//"下拉可以刷新"; if (REFRESH_HEADER_PULLING == null) { REFRESH_HEADER_PULLING = context.getString(R.string.srl_header_pulling); }

三,还有一个方法需要注意,引用该第三方库时,在调用finishLoadMore() 方法时,默认会弹出 加载完成的白框,如果不想弹出这个白框,可以使用下面的方法

footer.setFinishDuration(500)//参数很明显是时间参数,将参数设为0,就没用白框了  

四、在此次开发中,还遇到一个坑是,网上在设置下拉刷新和上拉加载监听时,多使用Handler.postDelayed(Runnable runnable, int time)这个方法来模拟数据加载的过程。在前人的代码中,在加载数据时,仍然使用了这个方法,导致每次加载数据都会出现延时。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭