Как сохранить состояние ListView в фрагменте при повороте эк
Как сохранить состояние ListView в фрагменте при повороте эк
Здравствуйте, облазил весь интернет в поиске решения своей проблемы. Необходимо сохранить состояние ListView в фрагменте при повороте экрана. Сразу объясню, как работает приложение: есть активити, в нём фрагмент с ViewPager, страницы ViewPager тоже фрагменты, в них списки, состояние которых надо сохранить. Пробовал:
@Override
public void onSaveInstanceState(Bundle b){
super.onSaveInstanceState(b);
b.putParcelable("LIST_VIEW_STATE", timeline_list.onSaveInstanceState());
Log.d(LOG_TAG, "save state");
}
и
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
if(savedInstanceState!=null){
timeline_list.onRestoreInstanceState(savedInstanceState.getParcelable("LIST_VIEW_STATE"));
}
}
- не помогло
@Override
public void onSaveInstanceState(Bundle b){
super.onSaveInstanceState(b);
b.putParcelable("LIST_VIEW_STATE", timeline_list.onSaveInstanceState());
Log.d(LOG_TAG, "save state");
}
и
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
if(savedInstanceState!=null){
timeline_list.onRestoreInstanceState(savedInstanceState.getParcelable("LIST_VIEW_STATE"));
}
}
- не помогло
Re: Как сохранить состояние ListView в фрагменте при поворот
Как я понимаю у ListView есть какие-то данные, по которым вы его строите, не проще будет сохранять именно их?
Re: Как сохранить состояние ListView в фрагменте при поворот
Данные для списка берутся из БД, мне бы просто позицию прокрутки сохранить, так как при повороте список прокручивается на самый верх
Re: Как сохранить состояние ListView в фрагменте при поворот
хм, ну тогда может быть что-то типа:smartmore писал(а):Данные для списка берутся из БД, мне бы просто позицию прокрутки сохранить, так как при повороте список прокручивается на самый верх
http://stackoverflow.com/questions/3014 ... a-listview
Re: Как сохранить состояние ListView в фрагменте при поворот
После нескольких тестов выяснилось, что проблема не в том, что данные не сохраняются, а в том, что методы
timeline_list.onRestoreInstanceState(savedInstanceState.getParcelable("LIST_VIEW_STATE"));
или
timeline_list.setSelectionFromTop(savedInstanceState.getInt("index"), savedInstanceState.getInt("top"));
ничего не делают
timeline_list.onRestoreInstanceState(savedInstanceState.getParcelable("LIST_VIEW_STATE"));
или
timeline_list.setSelectionFromTop(savedInstanceState.getInt("index"), savedInstanceState.getInt("top"));
ничего не делают
Re: Как сохранить состояние ListView в фрагменте при поворот
к примеру smoothScrollToPosition работает
Re: Как сохранить состояние ListView в фрагменте при поворот
Проблема решена:
timeline_list.post(new Runnable() {
@Override
public void run() {
timeline_list.setSelectionFromTop(index, top);
}
});
timeline_list.post(new Runnable() {
@Override
public void run() {
timeline_list.setSelectionFromTop(index, top);
}
});