使用RxJava實現PullScrollView,PullListView, PullGridView 等進入自動下拉刷新

記得之前使用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));

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

發佈了37 篇原創文章 · 獲贊 26 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章