Can't restore the scroll posiotn of RecyclerView after rotation and after I close the app and open it again. In the first case I could use android:configChanges
in Manifest, but it doesn't help after I reopen the app.
Here is my code. After trying restore the state I see an empty screen without my list.
public class MainActivity extends AppCompatActivity implements IMainContract.View {
private final String BUNDLE_RECYCLER_LAYOUT = MainActivity.class.getSimpleName() + ".save.state.list";
private IMainContract.Presenter mainPresenter;
private MainAdapter adapter;
private LinearLayoutManager layoutManager;
private ImageView ivRefresh;
private ProgressBar progressBar;
private RecyclerView rvUsers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivRefresh = (ImageView) findViewById(R.id.ivRefresh);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
rvUsers = (RecyclerView) findViewById(R.id.rvUsers);
layoutManager = new LinearLayoutManager(this);
rvUsers.setLayoutManager(layoutManager);
mainPresenter = new MainPresenter(Repository.getInstance(this), this);
adapter = new MainAdapter(new ArrayList<>(), this);
rvUsers.setAdapter(adapter);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ivRefresh.setOnClickListener(v -> mainPresenter.onRefreshPressed());
if (savedInstanceState != null) {
Parcelable savedRecyclerLayoutState = savedInstanceState.getParcelable(BUNDLE_RECYCLER_LAYOUT);
layoutManager.onRestoreInstanceState(savedRecyclerLayoutState);
} else {
mainPresenter.subscribe();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(BUNDLE_RECYCLER_LAYOUT, layoutManager.onSaveInstanceState());
}
//...
}