如何在整个屏幕重定向中保持GridView的滚动位置(它充满了搜索结果)?
我在片段中有GridView,当我旋转屏幕时,它会跳回到列表的顶部。
为了让它变得更加棘手,在横向模式下,我的GridView有3列..在纵向模式下,它有2列。
我似乎无法弄清楚如何将片段的GridView滚动到屏幕方向改变时应该接近的位置。
答案 0 :(得分:24)
您可以使用以下方法,它适用于所有Android版本。
保存当前滚动位置:
int index = gridView.getFirstVisiblePosition();
然后在更改方向后,使用以下代码将gridView位置设置为已保存的索引:
gridView.setSelection(index);
答案 1 :(得分:19)
你可以试试这个:
最初,您必须通过调用:
来获取GridView的当前滚动位置int index = gridview.getFirstVisiblePosition();
然后您必须在方向更改时保存此值,并且再次创建GridView时,您必须将gridview移动到此索引。
我认为这可行:
gridview.smoothScrollToPosition(int index)
希望这有帮助!
答案 2 :(得分:0)
使用 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。