SwipeRefreshLayoutネストPullToRefreshListViewドロップダウンリフレッシュ競合解決
1843 ワード
SwipeRefreshLayoutネストPullToRefreshListViewは、一定距離下にスライドして上にスライドしようとすると、scrollイベントがSwipeRefreshLayoutによってブロックされていることに気づきました.解決策は次のとおりです.
一、OnScrolListenerインタフェースを実現する
二、PullToRefreshListViewにScrolListenerを設定する
一、OnScrolListenerインタフェースを実現する
/** PullToRefreshListView Scroll , ScrollListener PullToRefreshListView */
public class SwpipeListViewOnScrollListener implements AbsListView.OnScrollListener {
private SwipeRefreshLayout mSwipeView;
private AbsListView.OnScrollListener mOnScrollListener;
public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView) {
mSwipeView = swipeView;
}
public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView,AbsListView.OnScrollListener onScrollListener) {
mSwipeView = swipeView;
mOnScrollListener = onScrollListener;
}
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
View firstView = absListView.getChildAt(firstVisibleItem);
// firstVisibleItem 0 。 firstView==null , ; top==0 ,
if (firstVisibleItem == 0 && (firstView == null || firstView.getTop() == 0)) {
mSwipeView.setEnabled(true);
} else {
mSwipeView.setEnabled(false);
}
if (null != mOnScrollListener) {
mOnScrollListener.onScroll(absListView, firstVisibleItem,
visibleItemCount, totalItemCount);
}
}
}
二、PullToRefreshListViewにScrolListenerを設定する
SwpipeListViewOnScrollListener scrollListener = new SwpipeListViewOnScrollListener(swiperefreshlayout);
refreshListView.setOnScrollListener(scrollListener);