1. 程式人生 > >自定義PullToRefresh正在重新整理的時候不能滑動listview問題解決

自定義PullToRefresh正在重新整理的時候不能滑動listview問題解決

今天在定義PullToRefresh的時候遇到一個問題,繼承了PullToRefreshBase類實現了相關方法,為recyclerView添加了上啦和下拉功能後發現正在重新整理的時候recyclerView不能滑動。根據時間分發的順序,我首先想到的就是正在重新整理的時候PullToRefreshBase把事件給攔截了,所以檢視PullToRefreshBase原始碼的onInterceptTouchEvent方法:

@Override
    public final boolean onInterceptTouchEvent(MotionEvent event) {

        if
(!isPullToRefreshEnabled()) { return false; } final int action = event.getAction(); if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { mIsBeingDragged = false; return false; } if (action != MotionEvent.ACTION_DOWN && mIsBeingDragged) { return
true; } switch (action) { case MotionEvent.ACTION_MOVE: { // If we're refreshing, and the flag is set. Eat all MOVE events if (!mScrollingWhileRefreshingEnabled && isRefreshing()) { return true; } if
(isReadyForPull()) { final float y = event.getY(), x = event.getX(); final float diff, oppositeDiff, absDiff; .....................

可以看到switch裡第一個if條件如果正在重新整理並且!mScrollingWhileRefreshingEnabled的時候就對事件進行攔截,所以我們可以嘗試看看有沒有提供可以改變mScrollingWhileRefreshingEnabled變數的方法。果然,提供了setScrollingWhileRefreshingEnabled方法,所以如果要讓自定義的view重新整理的時候可以滑動,只需要在初始化的時候setScrollingWhileRefreshingEnabled(true)就ok了。