-1

Hi I am using RecyclerView with GridLayoutManager to load images but its scrollToPositionWithOffset() method is not working.

I have saved recyclerview first visible item position in onSavedInstanceState() and I retrieve its value in onViewStateRestored() and I am getting correct positions everytime but RecyclerView doesn't scroll to desired position.I am checking that by rotating my screen but its not getting scrolled to desired position.

Here's my code:

  @Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("position", ((GridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition());
}

@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    if (savedInstanceState != null) {
        int state = savedInstanceState.getInt("position");
        ((GridLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(state, 20);
    }
}
Sahil Shokeen
  • 336
  • 3
  • 22

1 Answers1

1

Use smoothScrollToPosition() instead of scrollToPositionWithOffset()

Try this:

@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    if (savedInstanceState != null) {
        int state = savedInstanceState.getInt("position");
        recyclerView.smoothScrollToPosition(state);
    }
}
Ferdous Ahamed
  • 21,438
  • 5
  • 52
  • 61