SwipeRefreshLayout结合ListView使用的时候有时候存在下拉冲突

错误分析:

在我们下拉刷新的时候,就是listView不能向下滑动了造成了刷新的问题,这是因为我嵌套了一个ScrollView, 结果当第一个item长度超过一屏,明明还没有到达列表顶部,Scroll事件就被拦截,列表无法滚动,同时启动了刷新。

解决方法:

自定义onScrollListener
/* 由于Listview与下拉刷新的Scroll事件冲突, 使用这个ScrollListener可以避免Listview滑动异常 /

public static class SwpipeListViewOnScrollListener implements AbsListView.OnScrollListener {

private SwipeRefreshLayout mSwipeView;
private AbsListView.OnScrollListener mOnScrollListener;

public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView) {
    mSwipeView = swipeView;
}

public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView,
        OnScrollListener onScrollListener) {
    mSwipeView = swipeView;
    mOnScrollListener = onScrollListener;
}

@Overridepublic void onScrollStateChanged(AbsListView absListView, int i) {
}

@Overridepublic 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);
    }
}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值