Я пытался несколькими способами восстановить данные списка, когда пользователь поворачивает свой телефон ... Однако у меня возникают некоторые трудности из-за того, что когда я поворачиваю экран один раз, он работает, но когда я его поворачиваю в другой раз он больше не работает. Кроме того, я попытался восстановить положение прокрутки, но безуспешно.
Итак, я хотел бы знать, как это сделать лучше всего.
Мой код:
private ListView item_container;
private ArrayList<Song.Hits> values;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
item_container = findViewById(R.id.bottom_popup_container);
}
И когда я заканчиваю sh извлекать данные из API, я загружаю их в список (и сохраняю данные):
@Override
public void onRequestFinish(ArrayList<Song.Hits> hits) {
if (!hits.isEmpty()) {
CAdapter adapter = new CAdapter(hits);
item_container.setAdapter(adapter);
values = adapter.getHits();
};
}
Наконец, я перезаписываю эти 2 метода для сохранения позиция и элементы списка.
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
outState.putParcelableArrayList("list", values);
outState.putParcelable("pos", item_container.onSaveInstanceState());
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
ArrayList<Song.Hits> values = savedInstanceState.getParcelableArrayList("list");
if (values != null) {
CAdapter adapter = new CAdapter(values);
item_container.setAdapter(adapter);
item_container.onRestoreInstanceState(savedInstanceState.getParcelable("pos"));
}
}