2011-12-23 2 views
12

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

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

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

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

ответ

18

Вы можете попробовать это:

Сначала вы должны получить текущую позицию прокрутки в GridView по телефону:

int index = gridview.getFirstVisiblePosition(); 

Тогда вы должны сохранить эти значения при изменении ориентации и когда GridView находится снова создан, вам нужно переместить gridview на этот индекс.

Я предполагаю, что это может работать:

gridview.smoothScrollToPosition(int index) 

Надеется, что это помогает!

+6

Я видел это, но мне нужен для поддержки обратно до 2.1, и поэтому у меня нет доступа к smoothScrollToPosition(). Вместо этого я использую setSelection (int position). getFirstVisiblePosition() - именно то, что мне нужно. Теперь я чувствую себя глупо! Спасибо! –

+0

Нет проблем! Рад, что помогло вам! :) –

+4

В моем приложении smoothScrollToPosition не работает. Но setSelection отлично работает. – ChangUZ

24

Вы можете использовать следующий метод, он будет работать для всех версий Android.

Чтобы сохранить текущую позицию прокрутки:

int index = gridView.getFirstVisiblePosition(); 

Затем после изменения ориентации, используйте следующий код, чтобы установить GridView позиции сохраненного индекс:

gridView.setSelection(index); 
+4

это сработало !!!! gridview.smoothScrollToPosition (int index) ---> не будет работать при ленивой загрузке. – krisDrOid

+0

Same @krisDrOid – ChangUZ

+0

Это работает - спасибо помощнику! –

Смежные вопросы