请在Chrome、Firefox等现代浏览器浏览本站。如果有问题请 点击加我 QQ 说你的建议。

SwipeRefreshLayout实现进入页面自动刷新

安卓教程 sendtion 1376℃ 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);
}
});

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

转载请注明:风的记忆 » SwipeRefreshLayout实现进入页面自动刷新

喜欢 (0)or分享 (0)