• 欢迎访问风的记忆博客网站,如有疑问请加作者QQ或者微信联系。作者QQ:524100248,微信号:sendtion。

SwipeRefreshLayout实现进入页面自动刷新

安卓教程 sendtion 9年前 (2016-04-14) 4551次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

谷歌提供的官方下拉刷新控件 SwipeRefreshLayout,用起来很方便,很实用,也很漂亮,那么我们有什么理由不用呢?

我们正常的时候,都是手动下拉刷新,更新数据,然后停止刷新。但是,有时候我们会有进入页面自动刷新的需求,那么 SwipeRefreshLayout 可以实现吗?答案是肯定的。

于是,我兴奋的去实现了:

layout_refresh.setRefreshing(true);

然而,我发现在 onCreate()方法中直接调用这个方法没有任何的效果。网上提供了几种解决方案。

1、利用反射实现

public static void setRefreshing(SwipeRefreshLayout refreshLayout,boolean refreshing, boolean notify){
Class<? extends SwipeRefreshLayout> refreshLayoutClass =   refreshLayout.getClass();
if (refreshLayoutClass != null) {

try {
Method setRefreshing = refreshLayoutClass.getDeclaredMethod(“setRefreshing”, boolean.class, boolean.class);
setRefreshing.setAccessible(true);
setRefreshing.invoke(refreshLayout, refreshing, notify);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}

然后,这样来调用:setRefreshing(layout_refresh,true,true);

2、利用延时实现

打开刷新动画和取消刷新动画都延时 500ms。

开始刷新:

new Handler().postDelayed(new Runnable() {
layout_refresh.setRefreshing(true);
}, 500); //延迟 500ms 执行

结束刷新:

new Handler().postDelayed(new Runnable() {
layout_refresh.setRefreshing(false);
}, 500); //延迟 500ms 执行

3、利用 post 方法

开始刷新:

layout_refresh.post(new Runnable() {

@Override
public void run() {
layout_refresh.setRefreshing(true);
}
});

结束刷新:

layout_refresh.post(new Runnable() {

@Override
public void run() {
layout_refresh.setRefreshing(false);
}
});

以上三种方法,都经过本人测试,都可以达到效果。个人觉得,后两种比较好用。


风的记忆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SwipeRefreshLayout 实现进入页面自动刷新
喜欢 (0)
[sendtion@126.com]
分享 (0)
sendtion
关于作者:
一个不断奋斗追逐梦想的少年~
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址