Android GridView在项目点击时滚动到顶部

时间:2012-02-15 14:06:16

标签: android gridview android-gridview

我在Android上有一个GridView,我填充了自定义图像。当用户点击图像时,它会转到另一个活动。这非常有效。

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

有可能吗?

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

提前致谢!

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

1 个答案:

答案 0 :(得分: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();
}