Android Studio 3.0.1
Build #AI-171.4443003, built on November 9, 2017
JRE: 1.8.0_152-release-915-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1
Parcelable mLayoutManagerState;
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putParcelable("StoreRecyclerView", recyclerView.getLayoutManager().onSaveInstanceState());
}
@Override
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
mLayoutManagerState = state.getParcelable("StoreRecyclerView");
}
@Override
protected void onResume() {
super.onResume();
if (mLayoutManagerState != null) {
recyclerView.getLayoutManager().onRestoreInstanceState(mLayoutManagerState);
}
}
Примечание. Нет никаких гарантий, что метод onSaveInstanceState() будет вызван до того, как ваша операция будет уничтожена, поскольку существуют случаи, когда нет необходимости сохранять состояние (например, когда пользователь покидает вашу операцию нажатием кнопки Назад, явным образом закрывая ее). Если система вызывает метод onSaveInstanceState(), она делает это до вызова метода onStop() и, возможно, перед вызовом метода onPause().
Сохраняете в onPause(), восстанавливаете в onResume()
Сохранение
lastFirstVisiblePosition = ((LinearLayoutManager)recyclerView
.getLayoutManager())
.findFirstCompletelyVisibleItemPosition();
Восстановление
((LinearLayoutManager) recyclerView.getLayoutManager())
.scrollToPositionWithOffset(lastFirstVisiblePosition,0)