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