我有gridview,我需要做两件事:
当我向下滚动时,我想找到最后一个可见位置,例如int index = GridView.getLastVisiblePosition();
当我向上滚动时,我想找到第一个可见的位置,例如int index = GridView.getFirstVisiblePosition();
我知道我可以使用以下代码,但我不确定如何以及在何处为ScrollUp和ScrollDown编写代码。请帮我。我是Android的新手。
private OnScrollListener onAnswersScrolled = new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}
答案 0 :(得分:20)
在你的活动中创建全局变量myLastVisiblePos
,并为每个FirstVisiblePosition保存,当onScroll事件检查当前FirstVisiblePosition时保存的FirstVisiblePosition如果greate比你上次保存的FirstVisiblePosition那么scrollUp如果小则滚动:
int myLastVisiblePos;// global variable of activity
//save first value when you create GridView
GridView gridView = (GridView) gv.findViewById(R.id.grid_view);
myLastVisiblePos = gridView.getFirstVisiblePosition();
gridView.setOnScrollListener( new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int currentFirstVisPos = view.getFirstVisiblePosition();
if(currentFirstVisPos > myLastVisiblePos) {
//scroll down
}
if(currentFirstVisPos < myLastVisiblePos) {
//scroll up
}
myLastVisiblePos = currentFirstVisPos;
}
});
答案 1 :(得分:1)
尝试此代码可能对您有所帮助..
GridView gridView = (GridView) gv.findViewById(R.id.grid_view);
gridView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
Log.e("GridView","firstVisibleItem"+firstVisibleItem+"\nLastVisibleItem"+totalItemCount);
}
}
});