Ist es möglich, erweiterbare Listenelemente mit dem neuen RecyclerView zu verwenden? Wie ExpandableListView?
android
android-recyclerview
Dariusz Rusin
quelle
quelle
Antworten:
Dies ist mit den Standard-LayoutManagern einfach zu tun. Alles hängt davon ab, wie Sie Ihren Adapter verwalten.
Wenn Sie einen Abschnitt erweitern möchten, fügen Sie Ihrem Adapter nach der Kopfzeile einfach neue Elemente hinzu. Denken Sie daran, notifyItemRangeInserted aufzurufen, wenn Sie dies tun. Um einen Abschnitt zu reduzieren, entfernen Sie einfach die relevanten Elemente und rufen notifyItemRangeRemoved () auf. Bei Datenänderungen, die entsprechend benachrichtigt werden, werden die Ansichten in der Recycler-Ansicht animiert. Beim Hinzufügen von Elementen wird ein Bereich erstellt, der mit den neuen Elementen gefüllt werden soll, wobei die neuen Elemente eingeblendet werden. Das Entfernen ist das Gegenteil. Neben dem Adapter müssen Sie lediglich Ihre Ansichten formatieren, um dem Benutzer die logische Struktur zu vermitteln.
Update: Ryan Brooks hat jetzt einen Artikel darüber geschrieben .
quelle
Holen Sie sich das Beispielcode Implementierung von hier
Legen Sie ValueAnimator in onClick von ViewHolder fest
Hier ist der endgültige Code
quelle
ExpandableListView
", da der erweiterte Inhalt in diesem Fall eine Liste mit Elementen ist, die vom Adapter stammen. Dies ist eine entartete Lösung, bei der nur 1 Element als Kinder innerhalb der Gruppe zulässig ist.https://github.com/gabrielemariotti/cardslib
Diese Bibliothek verfügt über eine Implementierung einer erweiterbaren Liste mit einer Recycling-Ansicht (siehe die Demo-App unter "CardViewNative" -> "Liste, Raster und RecyclerView" -> "Erweiterbare Karten"). Es hat auch viele andere coole Kombinationen von Karten / Listen.
quelle
Jemand hat sich darüber beschwert, dass die oben genannte Lösung mit einer Listenansicht nicht als erweiterbarer Inhalt verwendet werden kann. Es gibt jedoch eine einfache Lösung: Erstellen Sie eine Listenansicht und füllen Sie diese Listenansicht manuell mit Ihren Zeilen .
Lösung für die Faulen: Es gibt eine einfache Lösung, wenn Sie Ihren Code nicht zu stark ändern möchten. Verwenden Sie einfach Ihren Adapter manuell, um Ansichten zu erstellen und sie dem hinzuzufügen
LinearLayout
.Hier ist das Beispiel:
Hilfsfunktionen: getThemeReference
Hilfsklasse: ExpandUtils
Kavin Varnan postet bereits, wie man ein Layout animiert ... Aber wenn Sie meine Klasse verwenden möchten, können Sie dies gerne tun: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
quelle
recyclerview
und Sie können diese verschachtelte Ansicht erweitern / ausblenden und alle Optimierungen desrecyclerview
Sie können ExpandableLayout verwenden, das einer reibungslosen CheckBox zum Erweitern / Reduzieren von Animationen ähnelt, sodass Sie es als CheckBox in ListView und RecyclerView verwenden können.
https://github.com/KyoSherlock/ExpandableLayout
quelle
Dies ist der Beispielcode für das, was von @TonicArtos erwähnt wird, um Elemente hinzuzufügen und zu entfernen und es dabei zu animieren. Dies stammt aus dem RecyclerView Animations- und GitHub-Beispiel
1) Fügen Sie Listener in Ihren onCreateViewHolder () ein, um sich für onClick zu registrieren
2) Erstellen Sie Ihren benutzerdefinierten OnClickListener in Ihrem Adapter
3) Fügen Sie Ihr addItem () und deleteItem () hinzu
4) Wenn sich Ihr RecyclerViewAdapter nicht in derselben Aktivität wie die Recycler-Ansicht befindet , übergeben Sie beim Erstellen die Instanz von recyclerView an den Adapter
5) itemList ist eine ArrayList vom Typ mObject, mit deren Hilfe der Status von Element (Öffnen / Schließen), Name, Elementtyp (subItems / mainItem) und das Thema basierend auf Werten festgelegt werden können
quelle