问题ListVies和Swiperefresh

时间:2015-09-27 09:02:13

标签: android listview

我在包含列表视图的布局中使用滑动刷新。面临的问题是,当我向下滚动列表时,它可以正常但是当向上滚动列表时,它会调用刷新方法。所以无法访问列表视图中的上层项目

那么我怎么做到只有在列表视图向上滚动后才能完全刷新?我尝试在启动时放置android.support.v4.widget.SwipeRefreshLayout。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以对SwipeRefreshLayout进行子搜索,并为canChildScrollUp提供合适的实现,以检查您的ListView是否到达(其第一个子项是完全可见的),然后在您的布局中使用它。 E.g。

public class MySwipeRefreshLayout extends SwipeRefreshLayout {

private AbsListView mTargetView;

public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean canChildScrollUp() {
    if (getChildCount() == 0) {
        return true;
    }
    if (mTargetView == null) {
        if (!(getChildAt(0) instanceof AbsListView)) {
            return true;
        }
        mTargetView = (AbsListView) getChildAt(0);
    }
    if (mTargetView.getChildCount() > 0 && mTargetView.getFirstVisiblePosition() == 0) {
        return mTargetView.getChildAt(0).getTop() > 0;
    }
    return true;
}
}

您可以根据具体用例进行调整。