2011-12-23 46 views
12

如何在整个屏幕重新定向过程中如何保持GridView的滚动位置(充满搜索结果)?通过屏幕旋转保持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()正是我所需要的。现在我感到很傻!谢谢! – 2011-12-23 19:30:26

+0

没问题的队友!很高兴帮助你! :) – 2011-12-23 19:34:20

+4

在我的应用程序中,smoothScrollToPosition不起作用。但setSelection正常工作。 – ChangUZ 2013-05-21 06:12:21

24

您可以使用以下方法,它将适用于所有Android版本。

要保存当前的滚动位置:

int index = gridView.getFirstVisiblePosition(); 

然后方向更改后,使用下面的代码到GridView位置设置为保存索引:

gridView.setSelection(index); 
+4

这工作!当延迟加载时,gridview.smoothScrollToPosition(int index)--->将不起作用。 – krisDrOid 2013-02-04 10:25:33

+0

相同@krisDrOid – ChangUZ 2013-05-21 06:11:21

+0

工作原理 - 感谢队友! – 2014-03-21 18:29:19