使用RxJava实现PullScrollView,PullListView, PullGridView 等进入自动下拉刷新

来源:互联网 发布:网站幻灯片js代码 编辑:程序博客网 时间:2024/06/08 17:35

记得之前使用postDelayed,判断getHeaderSize是否为0来确定是否调用下拉刷新方法,详细可看我的另外一篇文章http://blog.csdn.net/qq_24641847/article/details/46864809
但是其中有一个缺陷就是必须继承重新添加,如果所有的下拉刷新都加上这个处理的话,就需要额外写不少代码,现在我们抽出一个工具类,使用RxJava来实现,
核心代码:

public class PullToRefreshUtil {    public static void setRefreshing(PullToRefreshBase pullToRefresh, LifecycleTransformer transformer) {        if (pullToRefresh != null)            Observable.interval(200, TimeUnit.MILLISECONDS)                    .filter(aLong -> pullToRefresh.getHeaderLayout().getHeight() > 0).firstElement()                    .compose(transformer)                    .subscribeOn(Schedulers.io())                    .observeOn(AndroidSchedulers.mainThread())                    .subscribe(aLong -> pullToRefresh.setRefreshing());    }}

fragment调用:(activity类似)

PullToRefreshUtil.setRefreshing(mRefreshScrollView, bindUntilEvent(FragmentEvent.DESTROY_VIEW));

可以看到我们不用多添加任何代码,只需要在需要用的时候调用一些就好
我这里使用绑定了界面生命周期,如果不使用,记得主动在界面销毁的时候解绑

阅读全文
0 0