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