Recyclerview GridLayoutManager scrollToPositionWithOffset не работает

Привет я использую RecyclerView с GridLayoutManager для загрузки изображений, но его метод scrollToPositionWithOffset() не работает.

Я сохранил позицию первого видимого элемента в программе просмотра повторов в методе onSavedInstanceState() и извлекаю его значение в методе onViewStateRestored(), и каждый раз получаю правильные позиции, но RecyclerView не прокручивает до нужной позиции. Я проверяю это, поворачивая экран, но не получая прокручивается в нужную позицию.

Вот мой код:

  @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);
    }
}

1 ответ

Использование smoothScrollToPosition() вместо scrollToPositionWithOffset()

Попробуй это:

@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    if (savedInstanceState != null) {
        int state = savedInstanceState.getInt("position");
        recyclerView.smoothScrollToPosition(state);
    }
}
Другие вопросы по тегам