RecyclerView scrollToPosition not trigger scrollListener

前端 未结 8 2148
予麋鹿
予麋鹿 2021-02-01 03:35

I\'m using RecyclerView, with ScrollListener:

mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener()
{
        @Override
        public void onScr         


        
8条回答
  •  孤独总比滥情好
    2021-02-01 04:12

    Please try with

    LinearLayoutManager.scrollToPositionWithOffset(int, int).
    

    LayoutManager.scrollToPosition() may not work well, but LinearLayoutManager.scrollToPositionWithOffset() will work. And similarlly GridLayoutManager as well.

    Or we have to write our custom way of implementation because RecyclerView doesn't know how LayoutManager scrolls the view.

        class CustomLayoutManager extends LinearLayoutManager{
             public void smoothScrollToPosition(RecyclerView recyclerView,
                    RecyclerView.State state, final int position) {
    
              LinearSmoothScroller smoothScroller = 
                        new LinearSmoothScroller(mContext) {
            //Override the methods and write your implementation as per your requirement 
           //one which controls the direction and another one calculate the speed per Pixel
            }
        }
    

    Sometimes this does the trick

        new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            yourList.scrollToPosition(position);
        }
    }, 200);
    

提交回复
热议问题