【问题标题】:Android Gridview OnScrollListener ScrollUp and ScrollDown eventAndroid Gridview OnScrollListener 向上滚动和向下滚动事件
【发布时间】:2013-05-04 02:49:59
【问题描述】:

我有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) {
    }
}

【问题讨论】:

    标签: android gridview


    【解决方案1】:

    在您的活动中创建全局变量myLastVisiblePos,并为每个FirstVisiblePosition保存,当onScroll事件检查当前FirstVisiblePosition与您保存的FirstVisiblePosition是否大于您上次保存的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;
        }
    });
    

    【讨论】:

    • 非常感谢。我一定会尝试这个选项。在我的屏幕上,如果我稍微滚动一下,我可以同时看到第一个和最后一个可见位置。我想我可能不得不改变
    • 非常感谢。我一定会尝试这个选项。在我的屏幕上,如果我向上或向下滚动一点,我可以同时看到第一个和最后一个可见位置。如果我向下滚动并将其保留在中间,我想在屏幕上显示 lastvisible 位置,如果我向上滚动,我想以类似的方式在屏幕上显示 firstvisible 位置。我想我可能不得不改变 myLastVisiblePos = GridView.getFirstVisiblePosition();到 myLastVisiblePos = GridView.getLastVisiblePosition();否则我在第一个 if 语句中比较 1=1。请帮忙。
    • Shri Ksai 老实说我不明白你的问题,你可以添加截图了解你想要什么发送我的电子邮件
    • 精湛的人.. 很棒的答案。 +1
    • 非常感谢,真棒的回答。 +1
    【解决方案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);
                }
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-17
      • 2020-03-14
      • 2017-04-04
      • 2013-05-23
      • 2011-06-07
      • 2011-09-03
      • 1970-01-01
      相关资源
      最近更新 更多