您的位置:首页 > 其它

SwipeRefreshLayout 嵌套PullToRefreshListView下拉刷新冲突解决

2016-03-21 11:57 459 查看
SwipeRefreshLayout 嵌套PullToRefreshListView ,当我往下滑动一定距离,然后想往上滑动时,发现scroll事件已经被SwipeRefreshLayout拦截,解决办法如下:

一、实现OnScrollListener接口

/** 由于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设置ScrollListener
SwpipeListViewOnScrollListener scrollListener = new SwpipeListViewOnScrollListener(swiperefreshlayout);
refreshListView.setOnScrollListener(scrollListener);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: