如何在StaggeredGridView中使用setonScrollListener

时间:2013-02-24 15:07:08

标签: android android-layout android-gridview

我尝试在StaggeredGridView中添加Scroll侦听器 在那里,我无法想出一种方法来补充说,没有实现,我可以看到 Github网址 https://github.com/maurycyw/StaggeredGridView 谢谢

3 个答案:

答案 0 :(得分:10)

以下是我试图解决问题的方法

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

private AbsListView.OnScrollListener mOnScrollListener;

添加public 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

希望它有所帮助。

答案 1 :(得分: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);

答案 2 :(得分:1)

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