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