有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ListView滚动方向

当我的listview向上或向下滚动时,我需要检查滚动的方向,我得到的结果如下:

int lastVisibleItem = 0;
boolean isScrollingDown = false;

void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (firstVisibleItem > lastVisibleItem) {
        isScrollingDown = true;
        Log.e("logkey","down");
    }
    else {
        Log.e("logkey","up");
        isScrollingDown = false;
    }
    lastVisibleItem = firstVisibleItem;
}

问题是,当可见项目与屏幕相等时,或者当整个屏幕上有项目时,假设屏幕上只有6个项目,而最后一个项目是半可见的,则log cat开始同时向我显示向下和向上两个项目

简单地说,在上面的例子中,当有与屏幕相等的项目要放入时,滚动方向是不明确的,最后一个项目是半可见的,当我滚动时,我遇到了这个问题

谁能告诉我我做错了什么?提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    实现listview滚动监听器

             listview.setOnScrollListener(new OnScrollListener() {
                     private int LastVisibleItem;
    
                     @Override
                     public void onScrollStateChanged(AbsListView view, int scrollState) 
                     {}
    
                     @Override
                     public void onScroll(AbsListView view, int firstVisibleItem,
                                  int visibleItemCount, int totalItemCount) {
    
                        if(LastVisibleItem<firstVisibleItem){
                            Log.d("Tag","Scroll down");
                          }
                        if(LastVisibleItem>firstVisibleItem){
                            Log.d("Tag","Scroll up");
                          }
                         LastVisibleItem=firstVisibleItem;
                   }
                });
    
  2. # 2 楼答案

    幸运的是,我在GitHub上找到了一些很棒的东西!我已将简单的原生列表视图更改为此处列出的可观察列表视图

       https://github.com/ksoichiro/Android-ObservableScrollView
    

    它就像一个符咒,就像我想做的那样