1 - Первая статья реализует эти методы в layoutManager !?
Итак, я использую GridLayoutManager по умолчанию, чтобы реализовать сохранение и
восстановить экземпляр в GridLayoutManager Я должен создать свой собственный класс
расширение класса по умолчанию?
Если вы посмотрите и статью, и сообщение SO, они не реализуют ничего внутри LayoutManager
, они просто используют методы, которые уже существуют.
Если вы посмотрите на странице документации для GridLayoutManager , то уже есть методы onSaveInstanceState()
и onRestoreInstanceState (Parcelable state)
(эти два метода являются «удобным API», который блог упоминает в начале).
Как я уверен, вы заметили, GridLayoutManager
наследуется от LinearLayoutManager
официальная документация LinearLayoutManager.onSaveInstanceState () :
Вызывается, когда LayoutManager должен сохранить свое состояние. [...] Возвращает:
Parcelable Необходимая информация для LayoutManager, чтобы иметь возможность восстановить его
состояние
официальная документация LinearLayoutManager.onRestoreInstanceState (состояние Parcelable)
Очень неполный, но вы можете сказать, что он использует тот же параметр Parcelable
, возвращаемый LinearLayoutManager.onSaveInstanceState ()
2 - я могу реализовать эти методы в компоновщике независимо от
реализовать их в деятельности?
Для ясности: не нужно повторно реализовывать LayoutManager. Я не понимаю, зачем вам это нужно, методы есть и готовы к использованию.
Методы Activity с тем же именем - это то, что вам нужно реализовать.
3 - Где находится правильное место для реализации этих методов? или есть
официальный ответ на вопрос: «Как восстановить состояние
recyclerview? "
Правильное место для этого - методы жизненного цикла Действия, которые будут вызываться в подходящее время для сохранения и восстановления вашего состояния LayoutManager
.
Цитируя SO ответ, который вы упомянули:
//---> this is the Activity's onSaveInstanceState
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
// Save list state
mListState = mLayoutManager.onSaveInstanceState();
state.putParcelable(LIST_STATE_KEY, mListState);
}
//---> this is the Activity's onRestoreInstanceState
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
// Retrieve list state and list/item positions
if(state != null)
mListState = state.getParcelable(LIST_STATE_KEY);
}
//---> this is the Activity's onResume
@Override
protected void onResume() {
super.onResume();
if (mListState != null) {
mLayoutManager.onRestoreInstanceState(mListState);
}
}
Я не видел никакой официальной документации о , в частности восстановлении состояния RecyclerView / LayoutManager, но тема жизненного цикла очень важна в Android. Я считаю, что после полного понимания этого можно принять правильные решения в отношении конкретных вариантов использования.
Надеюсь, это поможет;)