Обновление Android ListView при прокрутке вниз - PullRequest
0 голосов
/ 04 февраля 2019

Я не хочу обновлять свой listView при прокрутке вниз, я делаю это:

mConnectionList.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            int action = event.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    if( mConnectionList.getLastVisiblePosition() == connectionList.size()-1 ){
                        getConnections();
                    }
                    break;
                case MotionEvent.ACTION_UP:
                    isCrollingDown.set(false);
                    break;
                default:
            }
            return false;
        }
    });

Но он не работает корректно, обновляется при прокрутке вниз и обновляется при прокрутке вверх

Также я пытаюсь сделать это, но это тоже не работает:

        mConnectionList.setOnScrollListener(new AbsListView.OnScrollListener() {



            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            }

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

//                Log.e("a0","a " + mConnectionList.getLastVisiblePosition());
//                if(mConnectionList.getLastVisiblePosition() == connectionList.size()-1 ){
                    getConnections();
                }


            }
        });

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

ты должен попробовать вот так.

scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {                  
        if (scrollY > oldScrollY) {
            Log.e("SCROLL", "Scroll DOWN"+scrollY);
        }
        if (scrollY < oldScrollY) {
            Log.e("SCROLL", "Scroll UP"+scrollY);
        }
        if (scrollY == 0) {
            Log.e("SCROLL", "TOP SCROLL"+scrollY);
        }
        if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
            Log.e("SCROLL", "BOTTOM SCROLL"+scrollY);
        }
    }
});

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

0 голосов
/ 04 февраля 2019

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

 private void scrollListBottom() {
        myListView.post(new Runnable() {
            @Override
            public void run() {
                listView.setSelection(listAdapter.getCount() - 1);
            }
        });
    }

myListView.setOnTouchListener(new OnTouchListener() 
  @Override
    public boolean onTouch(View v, MotionEvent event) {
     v.getParent().requestDisallowInterceptTouchEvent(true);
     return false;
}

});

...