Como posso rolar programaticamente para uma posição específica em um ListView
?
Por exemplo, eu tenho um String[] {A,B,C,D....}
e preciso definir o item visível no topo ListView
do índice 21 do meu String[]
.
android
android-listview
Maxime
fonte
fonte
Respostas:
Para uma rolagem direta:
Para uma rolagem suave:
fonte
smoothScrollToPosition
não está funcionando, alguma sugestão?listView.post(() -> listView.smoothScrollToPosition());
Para um SmoothScroll com duração de rolagem:
getListView().smoothScrollToPositionFromTop(position,offset,duration);
Nota: da API 11.
A resposta de HandlerExploit foi o que eu estava procurando, mas Minha lista de exibição é bastante longa e também com o scroller de alfabeto. Então eu descobri que a mesma função pode ter outros parâmetros também :)
Editar: (por sugestão dos AFDs)
Para posicionar a seleção atual:
fonte
Coloque seu código no manipulador da seguinte maneira:
e depois chame esse método como,
FELICIDADES!!!
fonte
Eu configurei OnGroupExpandListener e substitui onGroupExpand () como:
e use o método setSelectionFromTop () que define o item selecionado e posiciona a seleção y pixels da borda superior do ListView. (Se estiver no modo de toque, o item não será selecionado, mas ainda será posicionado adequadamente.) (Android docs)
fonte
A
Listview
rolagem será posicionada no topo por padrão, mas deseja rolar se não estiver visível, use o seguinte:fonte
Se alguém que procura uma funcionalidade semelhante, como o aplicativo Gmail,
A rolagem do Listview será posicionada no topo por padrão. Obrigado pela dica. amalBit. Apenas subtraia. É isso aí.
fonte
Se alguém estiver interessado em lidar com a listaVista uma linha para cima / para baixo usando o botão então.
fonte
Se você quiser pular diretamente para a posição desejada em uma lista, basta usar
listView.setSelection (int position);
e se você quiser pular suavemente para a posição desejada no listView, use
listView.smoothScrollToPosition (int position);
fonte
Isto é o que funcionou para mim. Combinação de respostas por amalBit & Melbourne Lopes
e chame esse método como:
fonte
sua fácil seleção list-view.set (você pos); ou você pode salvar sua posição com prioridade compartilhada e, ao iniciar a atividade, ela obtém preferências e elegibilidade para esse int
fonte
-Se você quiser que a lista role para cima \ amanhecer para uma posição específica:
-se você deseja obter a posição de um item específico no myListView:
-Também isso
myListView.getVerticalScrollbarPosition(i);
pode ajudá-lo.Boa sorte :)
fonte
Você precisa de duas coisas para definir com precisão a posição de rolagem de um listView:
Para obter a posição atual do ScrollView da lista:
Para definir a posição de rolagem listView:
fonte
Encontrei esta solução para permitir a rolagem para cima e para baixo usando dois botões diferentes.
Conforme sugerido por @Nepster, implementei a rolagem programaticamente usando getFirstVisiblePosition () e getLastVisiblePosition () para obter a posição atual.
fonte