0

我在 Android 上有一个 GridView,我用自定义图像填充。当用户单击图像时,它会转到不同的活动。这完美地工作。

我想解决的唯一问题是,每当用户进行选择时,GridView 都会滚动回顶部。我想保持在同一个位置,所以当用户使用 GridView 回到活动时,它会显示最后一个滚动位置。

可能吗?

我尝试在滚动事件上放置一个侦听器,但显然,最后捕获的事件是滚动到顶部,所以我不能使用它来将滚动移回它应该在的位置。

提前致谢!

更新:忘了提一个非常重要的点。我坚持使用 API 7。所以我没有smoothScrollToPosition.

4

1 回答 1

5

尝试以下操作:

private int _savedGridPosition = 0;
private GridView _gridView;

...

@Override
protected void onSaveInstanceState (Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("grid_position", _gridView.getFirstVisiblePosition());
}

@Override
protected void onRestoreInstanceState (Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    if(savedInstanceState != null && savedInstanceState.containsKey("grid_position")) {
        _savedGridPosition = savedInstanceState.getInt("grid_position");
    }
}

@Override
protected void onResume() {
    _gridView.smoothScrollToPosition(_savedGridPosition);
}

@Override void onPause() {
    // set in onPause() too since onRestoreInstanceState() is only
    // called when the Activity is destroyed and recreated.
    _savedGridPosition = _gridView.getFirstVisiblePosition();
}
于 2012-02-15T14:27:22.527 回答