記得之前使用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));
可以看到我們不用多添加任何代碼,只需要在需要用的時候調用一些就好
我這裏使用綁定了界面生命週期,如果不使用,記得主動在界面銷燬的時候解綁