Направление прокрутки ListView - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно проверить направление прокрутки, когда мой список просмотра прокручивается вверх или вниз, я получаю его как:

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 элементов, а последний элемент наполовину виден, и журнал регистрации начинает показывать мне одновременно и вниз, и вверх!

Простыми словами,в вышеприведенном случае направление прокрутки неоднозначно, когда есть элементы, равные размеру экрана, и самый последний элемент наполовину виден, и когда я прокручиваю, я получаю эту проблему!

Может кто-нибудь пожалуйстаскажите что я делаю не так?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Так, к счастью, я нашел что-то отличное на GitHub!Я изменил свой простой родной ListView на Observable List View, перечисленный здесь

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

, и он работал как шарм, так как я хочу работать как!

0 голосов
/ 18 октября 2018

Реализация списка просмотра ScrollListener

         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;
               }
            });
...