Wait unitl smoothScrollToPosition () termina

Escop

Preciso rolar para certa posição suavemente e depois "pular" para outra posição comsetSelection(anotherPosition). Isso é feito para criar uma ilusão de rolagem suave de (por exemplo) 100 itens emListView. smoothScrollToPosition(100) dura demais, você sabe.

Problem

setSelection() não espera atésmoothScrollToPosition termina seu trabalho, entãosetSelection() está sendo chamado imediatamente e o usuário vê apenas um salto rápido;

Códig
private final int scrollableItems = 20;

int firstVisiblePosition = mListView.getFirstVisiblePosition();
if (firstVisiblePosition < scrollableItems) {
    mListView.smoothScrollToPosition(0);
} else {
    mListView.smoothScrollToPosition(firstVisiblePosition - scrollableItems);
    mListView.setSelection(0);
}
mListView.clearFocus();
Idéi

OK, poderíamos mudar a lógica da ilusão de suavidade: primeirosetSelection(), depois role suavemente (estamos rolando para o primeiro item no topo da lista):

    int firstVisiblePosition = mListView.getFirstVisiblePosition();

    if (firstVisiblePosition < scrollableItems) {
        mListView.smoothScrollToPosition(0);
    } else {
        mListView.setSelection(scrollableItems);
        mListView.smoothScrollToPosition(0);
    }
    mListView.clearFocus();

questionAnswers(2)

yourAnswerToTheQuestion