3

我试图在 StaggeredGridView 中添加 Scroll 侦听器,我想不出一种方法来添加没有实现的方法,我可以看到
Github url https://github.com/maurycyw/StaggeredGridView 谢谢

4

3 回答 3

10

这是我尝试解决问题的方法

首先,添加一个私有实例:

private AbsListView.OnScrollListener mOnScrollListener;

添加公共 setOnClickListener 方法:

public void setOnScrollListener (AbsListView.OnScrollListener l) {
    mOnScrollListener = l;
}

然后,在 trackMotionScroll 中,添加行来调用侦听器:

private boolean trackMotionScroll(int deltaY, boolean allowOverScroll) {
.
.
.

/* HERE we call onScroll */
if (mOnScrollListener != null) {
    mOnScrollListener.onScroll(null, getFirstPosition(), getChildCount(), this.mItemCount);
}

return deltaY == 0 || movedBy != 0;
}

您也可以实现自己的onScrollStateChanged (AbsListView view, int scrollState)方法,但我懒得这样做:P

最后,您可以调用gridView.setOnScrollListener(listener)将侦听器传递给 StaggeredGridView

希望能帮助到你。

于 2013-04-02T12:39:43.923 回答
2

创建一个继承 SwipeRefreshLayout 的类并重写 canChildScrollUp() 方法来检查 StaggeredGridView 是否到达顶部,如果到达顶部返回 true,否则返回 false。

public class SwipeDownToRefrsh extends SwipeRefreshLayout{

PullToRefreshStaggeredGridView pullToRefreshStaggeredGridView;

public SwipeDownToRefrsh(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}



public void canChildScrollUp (PullToRefreshStaggeredGridView pullToRefreshStaggeredGridView) {
    this.pullToRefreshStaggeredGridView = pullToRefreshStaggeredGridView;
}


@Override
public boolean canChildScrollUp() {
    // TODO Auto-generated method stub
    if (pullToRefreshStaggeredGridView == null) {
        return true;
    } else {
        return !pullToRefreshStaggeredGridView.getRefreshableView().mGetToTop;
    }
}

}

在您的 Activity 或 Fragment 中,只需发送 StaggeredGridView 的瞬间,如下所示:

((SwipeDownToRefrsh)holder.swipeRefreshLayout).canChildScrollUp(holder.staggeredGridView);

于 2013-09-23T14:22:58.830 回答
1

我遇到了同样的问题,这就是为什么我自己添加了对滚动监听器的支持,你可以在 github 上找到该项目:https ://github.com/GoMino/StaggeredGridView

于 2013-04-25T09:18:12.970 回答