[Facile] ListView con indice alfabetico
Livello di difficoltà: facile
Versione SDK utilizzata: 8
Vedendo l'applicazione Persone di Google ho voluto provare ad implementare l'indice alfabetico che si trova sulla sinistra quando viene scrollata rapidamente la ListView e sono rimasto sbalordito dall'incredibile semplicità con la quale si realizza questo meccanismo.
Una volta popolata la ListView ci basterà costruire il nostro custom adapter ed implementare l'interfaccia SectionIndexer e facendo l'Override dei suoi metodi (getSections, getPositionForSection e getSectionForPosition). Quindi inserire nel costruttore dell'adapter quanto segue
Vediamo ora come funzionano i metodi dell'interfaccia SectionIndexer.
Il metodo getPositionForSection(int section) ritorna la prima posizione della sezione.
Il metodo getSectionForPosition(int position) ritorna l'indice della corrispettiva sezione all'interno dell'array in quella specifica posizione.
Il metodo getSections() ritorna un'array di oggetti che rappresentano le sezioni della lista.
"Configuriamo" i metodi sopra esposti come segue
Ho dimenticato di dire che affinchè tutto ciò funzioni c'è bisogno del fastScroll abilitato quindi o inserite nel codice XML della ListView
oppure da codice Java
Se avete seguito tutti i passaggi correttamente runnando l'applicazione e facendo un fast scroll dovreste avere qualcosa come questo
http://i.stack.imgur.com/9N3wJ.png
Il codice è stato testato da me personalmente su KitKat e Gingerbread ed il tutto funziona senza alcun tipo di problema.
Spero che questo tutorial sia stato d'aiuto a qualcuno. Ciao!