androidandroid-recyclerviewgridlayoutmanager

Android RecyclerView with gridlayout smoothScrollTo() speed


I have a recyclerview with gridlayoutmanager.

If I run the code

recycler.smoothScrollTo(adapter.getItemCount())

the recycler scrolls really fast to the last element. I tried some solutions on Stackoverflow to make the scrolling slower, but all apply to Linearlayoutmanager not Gridlayoutmanager.

Any help?


Solution

  • My simple working solution currently is still implementing a timer then working with it.

            final CountDownTimer scrollUp_timer = new CountDownTimer(50000, 30) {
            @Override
            public void onTick(long millisUntilFinished) {
                if (layoutManager != null && layoutManager.findFirstVisibleItemPosition() != 0) searchRecyclerView.smoothScrollToPosition(layoutManager.findFirstVisibleItemPosition()-1);
            }
    
                @Override
                public void onFinish() {
                    try{
                    }catch(Exception e){
                    // log
                    }
                }
            };
    
            scrollUp.setOnDragListener(new View.OnDragListener() {
                @Override
                public boolean onDrag(View view, DragEvent dragEvent) {
                layoutManager = ((GridLayoutManager)searchRecyclerView.getLayoutManager());
                int action = dragEvent.getAction();
                if (action == DragEvent.ACTION_DRAG_ENTERED) {
                    scrollUp_timer.start();
    
                } else if (action == DragEvent.ACTION_DRAG_EXITED) {
                    searchRecyclerView.scrollBy(0,0);
                    scrollUp_timer.cancel();
                }
                return true;
            }
        });