Я согласен с преимуществами предыдущих ответов. Однако, по опыту, я нашел это более сложным, чем это. SetSelectionFromTop очень чувствителен и часто ломается, если он выполняется слишком рано. Это может зависеть от разных причин, но две основные причины таковы:
- Если выполнено из методов жизненного цикла работ, представления еще не загружены/настроены.
- Просмотреть изменения, вызванные после того, как действие перемещения списка, похоже, нарушит движение. Вероятно, переписывая некоторую ценность до того, как переход был завершен из-за пересчета просмотров.
Рассуждение кажется применять как для setSelectionFromTop и setSelection() методы, хотя я тестировал в основном с setSelectionFromTop. smoothScrollToPosition() кажется более надежным, возможно потому, что он по определению изменяет позицию списка с задержкой, делая гладкую прокрутку.
Посмотрите на этот пример исходного кода:
// Wee need to pospone the list move until all other view setup activities are finished
list.post(new Runnable(){
@override
public void run() {
list.setSelectionFromTop(selectedPosition, Math.max(0, Math.round(list.getHeight()/3))); // Make sure selection is in middle of page, if possible.
// Make sure you do not modify (this or other) parts of the view afterwards - it may break the list move
// activityButtons.setVisibility(View.GONE);
}});