Ведение прокрутки позиции GridView с помощью поворота экрана
Как я могу сохранить положение прокрутки GridView (заполненное результатами поиска) во время переориентации экрана?
У меня есть GridView внутри фрагмента, и когда я поворачиваю экран, он возвращается к вершине списка.
Чтобы сделать это еще более сложным, в ландшафтном режиме мой GridView имеет 3 столбца.. в портретном режиме он имеет 2 столбца.
Я не могу понять, как сохранить фрагмент GridView, прокручиваемый где угодно, где он должен быть, когда меняется ориентация экрана.
Ответы
Ответ 1
Вы можете попробовать следующее:
Сначала вам нужно получить текущую позицию прокрутки GridView, вызвав:
int index = gridview.getFirstVisiblePosition();
Затем вам нужно сохранить это значение во время изменения ориентации и когда GridView будет создан снова, вам нужно переместить gridview на этот индекс.
Я полагаю, это могло бы работать:
gridview.smoothScrollToPosition(int index)
Надеюсь, это поможет!
Ответ 2
Вы можете использовать следующий метод, он будет работать для всех версий Android.
Чтобы сохранить текущую позицию прокрутки:
int index = gridView.getFirstVisiblePosition();
Затем после изменения ориентации используйте следующий код, чтобы установить позицию gridView в сохраненный индекс:
gridView.setSelection(index);
Ответ 3
Использование getFirstVisiblePosition() хорошо, но я нашел хорошее решение, просто чтобы сохранить состояние зрения.
//state of view (includes scroll position) as a Parceble
Parcelable mobileGalleryState = gridView.onSaveInstanceState();
//just restore previous state including all changes are made before
gridView.onRestoreInstanceState(mobileGalleryState);
Кстати, вы можете использовать его и для ListView.