Skip to content Skip to sidebar Skip to footer

Check When Smoothscrolltoposition Has Finished

I would like to check when smoothScrollToPosition has finished scrolling back to the first item of recyclerview. I tried doing it like this which only works while smoothScrollToPos

Solution 1:

I use onScrollStateChanged(RecyclerView recyclerView, int newState) method for tracking scrolling state. The method to initiate scroll looks like this:

private void scrollToPosition(int position){
    recyclerView.removeOnScrollListener(onScrollListener);
    recyclerView.addOnScrollListener(onScrollListener);
    recyclerView.smoothScrollToPosition(position);
}

And here is the listener:

RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
       @Override
       public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
           switch (newState) {
               case SCROLL_STATE_IDLE:
                   //we reached the target position
                   recyclerView.removeOnScrollListener(this);
                   break;
           }
       }
   };

So, when recyclerView reaches SCROLL_STATE_IDLE, that means it has finished scrolling. Don't forget to remove listener in this state, so it won't trigger on the next scroll.


Solution 2:

There is a listener for it:

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnScrollListener

void onScrolled (RecyclerView recyclerView, 
                int dx, 
                int dy)

Callback method to be invoked when the RecyclerView has been scrolled. This will be called after the scroll has completed.


Post a Comment for "Check When Smoothscrolltoposition Has Finished"