2011-01-09 14 views
13

Im un po 'di perdita su questo su come produrre sezioni in un ListView quando si utilizza sia Cursori e Custom SimpleCursorAdapter.SimpleCursorAdapter con sezioni in Android

Molti dei documenti là fuori fanno riferimento usando getView() ecc., Oppure creando diversi adattatori e aggiungendo intestazioni di sezione.

Ma questi tutti sembrano basarsi su BaseAdapters, ListAdapters, e ArrayAdapters ecc

Qualcuno ha affrontato qualcosa di simile in precedenza?

In caso negativo, qualche consiglio su come farlo funzionare?

Grazie Simon

risposta

9

ho seguito this tutorial e ha funzionato abbastanza bene. Il codice consente di utilizzare qualsiasi tipo di Adapter, quindi funziona perfettamente con ArrayAdapter o CursorAdapter.

+0

Grazie per quello. Ho dovuto riassumere il fatto che avevo bisogno di usare SeparatedListAdapter, essenzialmente come un wrapper per i miei adattatori personalizzati esistenti. – Simon

9

Se si utilizza un CursorAdapter, è possibile utilizzare il mio SectionCursorAdapter.

+0

Cheers, questo ha funzionato alla perfezione con SimpleCursorAdapters per avere sezioni alfabetiche nel mio ListView. Questo è stato molto più lavoro di quanto pensassi, penso che SimpleCursorAdapter mi abbia viziato nella sua semplicità! – georgiecasey

+0

Non è efficiente per il database SimpleCursorAdapter con un lungo elenco di elementi poiché è necessario iterare su tutti gli elementi per calcolare l'intestazione. Se il cursore viene restituito con una query GROUP BY, è molto meglio confrontare l'intestazione (il valore raggruppato) dell'elemento corrente con quello degli articoli precedente e successivo per determinare se abbiamo una nuova sezione o meno. –

+0

È possibile utilizzare AlphabetIndexer per calcolare le sezioni. – ycagri

2

Un altro grande che è in sviluppo attivo è SectionCursorAdapter e supporta gradle. Il creatore di questo ha anche promesso che sarà aggiornato per supportare RecyclerView quando viene rilasciato ufficialmente. Puoi anche controllare il post sul blog al numero ToastDroid

Problemi correlati