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);
}
}
}
SwpipeListViewOnScrollListener scrollListener = new SwpipeListViewOnScrollListener(swiperefreshlayout);
refreshListView.setOnScrollListener(scrollListener);

本文介绍了解决SwipeRefreshLayout嵌套PullToRefreshListView时滑动异常的方法,通过实现OnScrollListener接口并给PullToRefreshListView设置ScrollListener来避免滑动冲突,确保应用程序流畅运行。
4592

被折叠的 条评论
为什么被折叠?



