В моем приложении у меня есть класс, полученный из ExpandableListActivity. Когда я просматриваю содержимое, а затем меняю ориентацию телефона или редактирую элемент, а затем возвращаюсь к списку, позиция исходного списка не сохраняется. Я попробовал два решения, аналогичные тем, которые я недавно использовал с классами, созданными в ListActivity.
Решение 1:
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
mListState = state.getParcelable(LIST_STATE);
}
protected void onResume() {
super.onResume();
loadData();
if (mListState != null)
getExpandableListView().onRestoreInstanceState(mListState);
}
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
mListState = getExpandableListView().onSaveInstanceState();
state.putParcelable(LIST_STATE, mListState);
}
Решение 2:
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
mListPosition = state.getInt(LIST_STATE);
}
protected void onResume() {
super.onResume();
loadData();
getExpandableListView().setSelection(mListPosition);
}
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
mListPosition = getExpandableListView().getFirstVisiblePosition();
state.putInt(LIST_STATE, mListPosition);
}
Ни одно из решений не работает. Я также попытался объединить два решения, и это работает, когда я редактирую элемент и возвращаюсь к списку, но он НЕ работает, когда я меняю ориентацию телефона
Кто-нибудь может предложить хороший способ достичь моей цели?