RecycleView TouchListener при автоматической прокрутке - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь сделать RecyclerView с функцией AutoScroll.Теперь все работает нормально.Но я хочу TouchEvent с автопрокруткой.Это означает, что если пользователь не трогал, список автоматически прокручивается.И если пользователь коснется, список переместится к пальцу пользователя.Но теперь, если пользователь трогает список, список останавливается, но через 1 секунду он снова перемещается, даже если коснуться пальца.

Вот мой код.

recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {

            @Override
            public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
                switch (e.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        isTouched = true;
                        return false;
                    case MotionEvent.ACTION_MOVE:
                        isTouched = true;
                        return false;
                    case MotionEvent.ACTION_UP:
                        isTouched = false;
                        return true;
                }
                return super.onInterceptTouchEvent(rv, e);
            }
        });

        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(final RecyclerView view, int scrollState) {
                Log.e("test", isTouched+"");
                if (!isTouched) {
                    //list is top
                    if (!recyclerView.canScrollVertically(-1)) {
                        listHandler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
                                GoingDown = true;
                            }
                        }, 1000);// 1 second delay
                        //list is bottom
                    } else if (!recyclerView.canScrollVertically(1)) {
                        listHandler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                view.smoothScrollToPosition(0);
                                GoingDown = false;
                            }
                        }, 1000);// 1 second delay
                        //list is middle
                    } else {
                        if (GoingDown) {
                            listHandler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
                                    GoingDown = true;
                                }
                            }, 500);// 1 second delay
                        } else {
                            listHandler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    view.smoothScrollToPosition(0);
                                    GoingDown = false;
                                }
                            }, 500);// 1 second delay
                        }
                    }
                }
            }
        });

Что я должен исправить для нормальной работы?

ps] Извините за мой короткий английский.

...