Подтвердить что ты не робот

Ведение прокрутки позиции GridView с помощью поворота экрана

Как я могу сохранить положение прокрутки GridView (заполненное результатами поиска) во время переориентации экрана?

У меня есть GridView внутри фрагмента, и когда я поворачиваю экран, он возвращается к вершине списка.

Чтобы сделать это еще более сложным, в ландшафтном режиме мой GridView имеет 3 столбца.. в портретном режиме он имеет 2 столбца.

Я не могу понять, как сохранить фрагмент GridView, прокручиваемый где угодно, где он должен быть, когда меняется ориентация экрана.

4b9b3361

Ответ 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.