Android Gridview OnScrollListener ScrollUp和ScrollDown事件

Shr*_*sai 7 android gridview

我有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) {
    }
}
Run Code Online (Sandbox Code Playgroud)

mr.*_*fox 22

myLastVisiblePos在你的活动中创建全局变量,并为每个FirstVisiblePosition保存,当onScroll事件检查当前FirstVisiblePosition与你保存的FirstVisiblePosition如果greate比你上次保存的FirstVisiblePosition那么scrollUp如果小,那么scrollDown:

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;
    }
});
Run Code Online (Sandbox Code Playgroud)


Ume*_*ani 2

试试这个代码可能对你有帮助..

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);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)