2012-02-15 2 views
0

У меня есть GridView на Android. Я заполняю пользовательские изображения. Когда пользователь нажимает на изображение, он переходит в другое действие. Это прекрасно работает.Android GridView прокручивает вверх по элементу. Нажмите

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

Возможно ли это?

Я попытался положить слушателя на события прокрутки, но, очевидно, последнее зафиксированное событие - это прокрутка вверх, поэтому я не могу использовать это, чтобы переместить свиток там, где он должен быть.

Заранее благодарен!

Обновление: забыл упомянуть очень важный момент. Я застрял с API 7. Поэтому у меня нет smoothScrollToPosition.

ответ

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(); 
} 
+0

Большое спасибо за ответ. Я забыл упомянуть об этом на вопрос, но я не могу использовать 'smoothScrollToPosition', так как я застрял с API 7 в своем приложении ... :( –

+1

Вы застряли с' setSelection() 'then. –

+0

Попробуем с 'setSelection'. Спасибо! –

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