Sabe aquela funcionalidade da agenda de contatos do Android, onde quando se movimenta a barra de rolagem é exibida a primeira letra dos contatos atuais? Isso mesmo. Iremos aprender como implementá-la. Muito prático quando se deseja fornecer navegação rápida entre os itens de uma lista ordenada.
A navegação em listas no android pode se tornar muito cansativa quando se tem um número elevado de itens. Quando isso acontece, devemos fornecer alternativas ao usuário para facilitar esse acesso. Seja com filtros, barra de rolagem, carregamento parcial de dados, etc.
Caso a lista contenha dados que possam ser agrupados (por ordem alfabética, músicas por artista, etc.), uma boa opção é o uso da barra de rolagem com índices. Ela permite que se navegue rápidamente entre os itens. Abaixo iremos ver como implementar essa funcionalidade. No nosso caso será uma lista de artistas de rock, ordenadas por ordem alfabética.
Criando o Layout
|
|
No layout, para que nossa ListView exiba a barra de rolagem, é preciso definir android:fastScrollEnabled="true"
e android:fastScrollAlwaysVisible="true"
.
android:fastScrollEnabled="true"
habilita a exibição da barra de rolagem ao rolar a lista e android:fastScrollAlwaysVisible="true"
faz com que a barra fique sempre visível.
Criando o Adapter
No Adapter é necessário implementar a interface SectionIndexer
. Com ela a nossa lista poderá exibir os índices ao rolar:
Primeiro precisamos realizar a indexação da nossa lista (método runIndex()
). Nesse método, indexamos a primeira ocorrência de cada letra da lista em um HashMap (HashMap<letra,posicao>
) e criamos um array com as seções: A,B,C,D,…
Logo após implementamos os três métodos da interface: getSections()
,getPositionForSection(int section)
e getSectionForPosition(int i)
.
Iniciando a ListView
Agora iremos inicializar a nossa lista:
|
|
Instanciamos o nosso adapter com a lista de nomes e o setamos na ListView. Rodando o projeto, iremos obter o seguinte resultado:
O código completo desse exemplo pode ser encontrado aqui: GitHub
Espero que vocês possam utilizar essa funcionalidade nos seus projetos e usufruir dessa facilidade de navegação.
E caso surjam dúvidas ou sugestões, é só deixar o seu comentário. ^^
Até mais.