Frage

Ich möchte ein ListView erzeugen, die einige Teiler zwischen einigen der Einträge hat, wie es in einigen der Eigenschaft Abschnitte zu sehen ist. Siehe das Beispiel unten. Ich versuche, ein List zu erzeugen, die durch einen der Phantasie Teiler einig Textviews , gefolgt besteht aus dem nächsten Teil der Liste zu erklären und dann wieder ein paar Textansichten. Wie kann dies geschehen? Ich dachte über das Erstellen von verschiedenen Ansichten zur Liste hinzufügen? Ist dies der Weg zu gehen?

War es hilfreich?

Lösung

habe ich eine Lösung. Ich weiß nicht, ob es die beste ist.

ich einen benutzerdefinierten Adapter verwenden, abgeleitet von ArrayAdapter für die Liste, wie in diesem Tutorial . In der Adapter Klasse I überprüfen, ob die Position in dem getView Verfahren eine normale Zeile ist, dann aufzuzublasen I die Zeilen Layout. Wenn es die erste Zeile von einer neuen Gruppe ist aufblasen ich eine Schlagzeile Layout, das eine normale Zeile plus die Gruppe Schlagzeilen darüber.

Wenn Sie nicht wollen, den Header in eine Ihrer Zeilen mischen. Man betrachte die folgende Lösung:

Sie können die beiden Methoden überschreiben getItemViewType und getViewTypeCount . Sie haben nun eine Liste, die verschiedenen Zeilen angezeigt werden können. Sie müssen die erwartete Ansicht Typ für das Element in der getView-Methode prüfen und verschiedene Layouts aufblasen auf es abhängig.

Die Liste wird das Recycling für Sie in so handhaben, dass es nur richtig recycle Blick auf Ihre getView Methode zurückkehren wird, bedeutet dies, wenn die recycleView ist null sie nicht eingesetzt werden kann Ihre aktuelle Zelle angezeigt werden soll.

Andere Tipps

Sie können meine SectionedAdapter , wenn GPLv3 verwenden akzeptabel ist (auf diese Weise aufgrund einiger vorgelagerten Code zugelassen). Sie können mit meinem MergeAdapter , wenn Sie etwas flexibler und mit weniger einschränkenden Lizenz ( Apache 2).

Ich glaube, Sie könnten für android.widget.ExpandableListView suchen

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

Ich bin auch in einer Antwort auf diese Frage interessiert. Es muss ein einfacher Weg, dies zu tun.

Mit Blick auf den Adapter, gibt es eine Methode, Adapter.getItemViewType (int position).

Listview definiert einen Rückgabewert, ITEM_VIEW_TYPE_HEADER_OR_FOOTER, die anzeigt, ob das zurückgegebene Element eine Kopf- oder Fußzeile ist.

Ich habe versucht, es nicht, aber ich nehme an, wenn Sie Ihre eigenen Adapter erstellen und zurückgeben ein Element mit dem Typ angibt, dass es eine Kopf- oder Fußzeile ist, dass das Listview es entsprechend angezeigt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top