Как сохранить состояние ListView в фрагменте при повороте эк

Интерфейс, диалоги, темы, стили, меню
Закрыто
smartmore
Сообщения: 9
Зарегистрирован: 30 мар 2012, 21:44

Как сохранить состояние ListView в фрагменте при повороте эк

Сообщение smartmore » 21 июл 2013, 23:03

Здравствуйте, облазил весь интернет в поиске решения своей проблемы. Необходимо сохранить состояние 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"));
}
}

- не помогло

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение klblk » 22 июл 2013, 05:22

Как я понимаю у ListView есть какие-то данные, по которым вы его строите, не проще будет сохранять именно их?

smartmore
Сообщения: 9
Зарегистрирован: 30 мар 2012, 21:44

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение smartmore » 22 июл 2013, 09:16

Данные для списка берутся из БД, мне бы просто позицию прокрутки сохранить, так как при повороте список прокручивается на самый верх

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение klblk » 22 июл 2013, 09:39

smartmore писал(а):Данные для списка берутся из БД, мне бы просто позицию прокрутки сохранить, так как при повороте список прокручивается на самый верх
хм, ну тогда может быть что-то типа:
http://stackoverflow.com/questions/3014 ... a-listview


smartmore
Сообщения: 9
Зарегистрирован: 30 мар 2012, 21:44

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение smartmore » 22 июл 2013, 16:20

После нескольких тестов выяснилось, что проблема не в том, что данные не сохраняются, а в том, что методы

timeline_list.onRestoreInstanceState(savedInstanceState.getParcelable("LIST_VIEW_STATE"));
или
timeline_list.setSelectionFromTop(savedInstanceState.getInt("index"), savedInstanceState.getInt("top"));

ничего не делают

smartmore
Сообщения: 9
Зарегистрирован: 30 мар 2012, 21:44

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение smartmore » 22 июл 2013, 16:53

к примеру smoothScrollToPosition работает

smartmore
Сообщения: 9
Зарегистрирован: 30 мар 2012, 21:44

Re: Как сохранить состояние ListView в фрагменте при поворот

Сообщение smartmore » 22 июл 2013, 20:08

:!: :!: :!: Проблема решена:

timeline_list.post(new Runnable() {
@Override
public void run() {
timeline_list.setSelectionFromTop(index, top);
}
});

Закрыто