Domanda

Voglio generare un ListView che ha alcuni divisori tra alcune voci, come si può vedere in alcune delle sezioni di proprietà. Vedere l'esempio di seguito. Provo a generare un List che si compone di alcuni textviews , seguito da uno dei divisori di fantasia che spiegano la parte successiva della lista e poi di nuovo alcuni punti di vista del testo. Come si può fare? Ho pensato di creare diversi punti di vista per aggiungere alla lista? E 'questa la strada da percorrere?

È stato utile?

Soluzione

Ho una soluzione. Non so se è il migliore.

Io uso un adattatore personalizzato derivato da ArrayAdapter per l'elenco come descritto in questo esercitazione . Nella classe adattatore controllo se la posizione nel metodo GetView è una riga normale, allora gonfiare il layout di riga. Se è la prima riga di un nuovo gruppo I gonfiare un layout di titolo che è una riga normale più il titolo gruppo sopra di esso.

Se non si vuole mescolare l'intestazione in uno dei vostri file. Si consideri la seguente soluzione:

È possibile sovrascrivere i due metodi getItemViewType e getViewTypeCount . Ora avete una lista che può visualizzare diverse righe. È necessario controllare il tipo di vista previsto per la voce nel metodo GetView e gonfiare i layout diversi a seconda su di esso.

La lista gestirà il riciclaggio per voi in un modo che possa restituire solo vista corretto riciclaggio per il metodo di GetView, questo significa che se il recycleView non è nullo può essere utilizzato per visualizzare la cella corrente.

Altri suggerimenti

È possibile utilizzare il mio SectionedAdapter , se GPLv3 è accettabile (licenza che modo a causa di un codice a monte). È possibile utilizzare il mio MergeAdapter , se avete bisogno di qualcosa di più flessibile e con una licenza meno limitante ( Apache 2).

Penso che potrebbe essere alla ricerca di android.widget.ExpandableListView

http://developer.android.com/reference/android/widget /ExpandableListView.html

Sono anche interessato a una risposta a questa. Ci deve essere un modo più semplice per farlo.

Nel guardare l'adattatore, c'è un metodo, Adapter.getItemViewType (int position).

ListView definisce un valore di ritorno, ITEM_VIEW_TYPE_HEADER_OR_FOOTER che indica se l'articolo restituito è un'intestazione o piè.

Non ho provato, ma suppongo se si crea il proprio adattatore e ritorna un elemento con il tipo indica che è un'intestazione o piè di pagina, che la ListView verrà visualizzato in modo appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top