滚动到回收站视图中下一项的顶部

Scroll to top of next item in a recyclerview

我有以下代码检测onTouch 中的滑动是向左还是向右。但我想检测 top/down。请建议我如何通过修改代码来实现代码的更改

r.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int downX = 0,upX;
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN:{
                    downX = (int) event.getX();}
                case MotionEvent.ACTION_UP:{
                    upX = (int) event.getX();

                    float deltaX = downX - upX;
                    Log.e("DeltaX","Dd "+deltaX);
                     if(Math.abs(deltaX)>0){
                        if(deltaX>=0){

                            return true;
                        }else{

                            return  true;
                        }
                    }
                    else {

                    }
                }
            }

            return false;
        }
    });

请不要建议任何第 3 方库或任何其他解决方案。请仅建议对上述代码进行更改。我已经尝试了很多其他的东西,但这是一个完美的选择

感谢您的回复!

这是我想出的代码

  r.addOnScrollListener(new RecyclerView.OnScrollListener() {
        public boolean top;

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);


            if (top) {
                int index = mLay.findFirstVisibleItemPosition();
                r.smoothScrollToPosition(index);

            } else {
                int index = mLay.findLastVisibleItemPosition();
                r.smoothScrollToPosition(index);


            }


        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);

            if (dy > 0) {
                top = false;
            } else {

                top = true;
            }

        }
    });