Vom Android-Entwickler ( Erstellen von Listen und Karten ):
Das RecyclerView-Widget ist eine erweiterte und flexiblere Version von ListView.
Okay, es klingt cool, aber als ich dieses Beispielbild sah, war ich wirklich verwirrt über den Unterschied zwischen diesen beiden.
Das obige Bild kann einfach ListView
mit einem benutzerdefinierten Adapter erstellt werden.
Also, in welcher Situation sollte man verwenden RecyclerView
?
android
listview
android-recyclerview
Blaze Tama
quelle
quelle
Antworten:
RecyclerView
wurde alsListView
Verbesserung erstellt, also ja, Sie können eine angehängte Liste mitListView
Kontrolle erstellen , aber die VerwendungRecyclerView
ist einfacher, da es:Wiederverwendet Zellen beim Scrollen nach oben / unten - dies ist mit der Implementierung von View Holder im
ListView
Adapter möglich, war jedoch optional, währendRecycleView
dies die Standardmethode zum Schreiben des Adapters ist.Entkoppelt die Liste von ihrem Container - so können Sie Listenelemente zur Laufzeit einfach in die verschiedenen Container (linearLayout, gridLayout) mit Einstellung einfügen
LayoutManager
.Beispiel:
ItemAnimator
.Es gibt mehr darüber
RecyclerView
, aber ich denke, diese Punkte sind die wichtigsten.Zusammenfassend lässt sich sagen, dass
RecyclerView
es sich um eine flexiblere Steuerung für den Umgang mit "Listendaten" handelt, die den Mustern der Delegation von Bedenken folgt und nur eine Aufgabe für sich lässt - das Recycling von Gegenständen.quelle
Damit Listenansichten eine gute Leistung erzielen, müssen Sie das Haltermuster implementieren. Dies kann leicht zu Problemen führen, insbesondere wenn Sie die Liste mit verschiedenen Arten von Ansichten füllen möchten.
Der RecyclerView backt dieses Muster ein, was das Durcheinander erschwert. Es ist auch flexibler und erleichtert die Handhabung verschiedener Layouts, die nicht gerade linear sind, wie z. B. ein Raster.
quelle
ListView
ist der Vorfahr vonRecyclerView
. Es gab viele Dinge, dieListView
entweder nicht oder nicht gut machten. Wenn Sie die Mängel von sammelnListView
und das Problem lösen würden, indem Sie die Probleme in verschiedene Bereiche abstrahieren, erhalten Sie so etwas wie die Recycler-Ansicht. Hier sind die Hauptprobleme bei ListViews:Die
View
Wiederverwendung für dieselben Elementtypen wurde nicht erzwungen (sehen Sie sich einen der Adapter an, die in a verwendetListView
werden. Wenn Sie die Methode getView studieren, werden Sie feststellen, dass nichts einen Programmierer daran hindert, für jede Zeile eine neue Ansicht zu erstellen, selbst wenn eine übergeben wird über dieconvertView
Variable)Kostspielige
findViewById
Verwendungen wurden nicht verhindert (Selbst wenn Sie Ansichten wie oben angegeben recyceln, konnten Entwickler aufrufenfindViewById
, um den angezeigten Inhalt untergeordneter Ansichten zu aktualisieren. Der Hauptzweck desViewHolder
Musters inListViews
bestand darin, diefindViewById
Aufrufe zwischenzuspeichern. Dies war jedoch nur der Fall verfügbar, wenn Sie davon wussten, da es überhaupt nicht Teil der Plattform war)Nur unterstütztes vertikales Scrollen mit in Zeilen angezeigten Ansichten (Die Recycler-Ansicht kümmert sich nicht darum, wo Ansichten platziert und wie sie verschoben werden, sondern wird in a abstrahiert
LayoutManager
. Ein Recycler kann daher das traditionelleListView
wie oben gezeigt sowie Dinge wie dasGridView
, aber unterstützen es ist nicht darauf beschränkt, es kann mehr, aber Sie müssen die Programmierarbeit leisten, um dies zu erreichen.Animationen zum Hinzufügen / Entfernen waren kein Anwendungsfall, der berücksichtigt wurde. Es lag ganz bei Ihnen, herauszufinden, wie Sie vorgehen müssen (vergleichen Sie RecyclerView. Adapterklassen benachrichtigen * Methodenangebote v. ListViews, um sich ein Bild zu machen).
Kurz gesagt, es
RecyclerView
ist eine flexiblere SichtweiseListView
, obwohl möglicherweise mehr Codierung von Ihrer Seite vorgenommen werden muss.quelle
Antwort von Antonio Leiva
RecyclerView
ist in der Tat einpowerful view
alsListView
. Weitere Informationen finden Sie auf dieser Seite .quelle
Im Folgenden sind einige wichtige Punkte / Unterschiede zwischen RecyclerView und ListView aufgeführt. Nehmen Sie Ihren Anruf mit Bedacht entgegen.
quelle
Großer Vorteil :
ViewHolder
ist standardmäßig nicht verfügbar inListView
. Wir werden explizit innerhalb der erstellengetView()
.RecyclerView
hat eingebautViewholder
.quelle
Zusätzlich zu den oben genannten Unterschieden gibt es noch einige weitere:
RV trennt die Erstellung von Ansichten und die Bindung von Daten an die Ansicht. In LV müssen Sie überprüfen, ob convertView null ist oder nicht, um eine Ansicht zu erstellen, bevor Sie Daten daran binden. Im Falle von RV wird die Ansicht nur dann erstellt, wenn sie benötigt wird. Im Fall von LV kann man jedoch die Prüfung für die Konvertierungsansicht verpassen und jedes Mal eine Ansicht erstellen.
Mit LayoutManager ist das Wechseln zwischen Raster und Liste jetzt einfacher.
Es ist nicht erforderlich, alle Elemente zu benachrichtigen und zu aktualisieren, auch wenn nur ein einzelnes Element geändert wird.
Bei LV musste View Caching implementiert werden. Es wird standardmäßig in RV bereitgestellt. (Es gibt einen Unterschied zwischen View Caching und Recycling.)
Sehr einfache Artikelanimationen bei Wohnmobilen.
quelle
Vorteile von RecyclerView gegenüber Listview:
Enthält standardmäßig ViewHolder.
Einfache Animationen.
Unterstützt horizontale, Gitter- und versetzte Layouts
Vorteile von listView gegenüber recyclerView:
Einfach, Teiler hinzuzufügen.
Kann den eingebauten arrayAdapter für einfache einfache Listen verwenden
Unterstützt Kopf- und Fußzeile.
Unterstützt OnItemClickListner.
quelle
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
recyclerView = view.findViewById(R.id.feed);
8 Unterschiede zwischen RecyclerView und ListView
1. ViewHolder-Muster
Das Muster, mit dem Aufrufe von findViewById () -Methoden reduziert werden.
In ListView können Sie problemlos eine Liste erstellen, ohne ViewHolder zu verwenden. Aber nicht im Fall von RecyclerView.
2. Adapter
Beide sind AdapterViews, ja. Es funktioniert basierend auf der Adapterklasse.
Es ist einfach, ListView mit Standardadaptern wie ArrayAdapter, CursorAdapter zu erstellen, aber RecyclerView bietet die RecyclerView.Adapter-Klasse, um eine neue benutzerdefinierte Adapterklasse zu erstellen.
Sie können ArrayAdapter oder einen anderen integrierten Adapter nicht mit RecyclerView verwenden.
3. Anordnung der Gegenstände
Ich habe Vertical ListView in einfachem und weniger Code erstellt. Aber was ist, wenn wir eine GridView erstellen müssen?
RecyclerView verwendet LayoutManager, um seine Elemente anzuordnen. Es gibt 3 LayoutManager-Klassen.
Animationen
In ListView fehlen grundlegende Animationen. RecyclerView enthält jedoch einfache Animationen.
Teiler
Der Android - Version: Teiler und android: dividerHeight Attribute oder setDivider (), setDividerHeight () hilft Ihnen bei der Listview benutzerdefinierten Teiler zu machen.
Seit 25.1.0 können Sie die DividerItemDecoration- Klasse verwenden, um einen einfachen Teiler zu erstellen .
Klicken Sie auf Ereignisse
In RecyclerView fehlt OnItemClickListener , ja, das ist sehr traurig. Sie geben dem Entwickler jedoch mehr Kontrolle, indem sie RecyclerView.OnItemTouchListener bereitstellen .
Benachrichtigungsmethoden
Sie müssen geeignete Benachrichtigungsmethoden aufrufen, um korrekte Animationen auszuführen. RecylcerView verfügt im Vergleich zu ListView über viele Benachrichtigungsmethoden *.
quelle
Ich denke, der Haupt- und größte Unterschied besteht darin, dass
ListView
beim Erstellen oder Platzieren nach der Position des Elements gesucht wird, andererseitsRecyclerView
nach dem Typ des Elements. Wenn ein anderes Element mit demselben Typ erstellt wurde, wirdRecyclerView
es nicht erneut erstellt. Es fragt zuerst den Adapter und dann den Recyclingpool. Wenn der Recyclingpool "Ja, ich habe einen ähnlichen Typ erstellt"RecyclerView
sagt, wird nicht versucht, denselben Typ zu erstellen.ListView
hat keinen solchen Pooling-Mechanismus.quelle
Meiner Meinung nach
RecyclerView
wurde versucht, das Problem mit dem in Listenansichten verwendeten Recycling-Muster anzugehen, da dies das Leben der Entwickler erschwerte. Alles andere konnte man mehr oder weniger bewältigen. Zum Beispiel verwende ich den gleichen Adapter fürListView
undGridView
es in beiden Ansichten der Sache nichtgetView
,getItemCount
,getTypeCount
verwendet wird , so ist es das gleiche.RecyclerView
wird nicht benötigt, wennListView
mitListAdapter
oderGridView
mit Netzadaptern bereits für Sie gearbeitet wird. Wenn Sie dasViewHolder
Muster in Ihren Listenansichten korrekt implementiert haben, werden Sie keine große Verbesserung feststellenRecycleView
.quelle
Ich habe ein wenig mit gearbeitet
RecyclerView
und bevorzuge es immer nochListView
.Sicher, beide verwenden
ViewHolders
, also ist dies kein Vorteil.A
RecyclerView
ist schwieriger zu codieren.A
RecyclerView
enthält keine Kopf- und Fußzeile, daher ist es ein Minus.A
ListView
muss keinen ViewHolder erstellen. In Fällen, in denen Sie eine Liste mit Abschnitten oder Unterüberschriften haben möchten, ist es eine gute Idee, unabhängige Elemente (ohne ViewHolder) zu erstellen. Dies ist einfacher und erfordert keine separaten Klassen.quelle
Wenn Effizienz Ihr Anliegen ist, ist es eine gute Idee, eine ListView durch eine RecyclerView zu ersetzen.
quelle
Einfache Antwort: Sie sollten RecyclerView in einer Situation verwenden, in der Sie viele Elemente anzeigen möchten und deren Anzahl dynamisch ist. ListView sollte nur verwendet werden, wenn die Anzahl der Elemente immer gleich ist und auf die Bildschirmgröße beschränkt ist.
Sie finden es schwieriger, weil Sie nur an die Android-Bibliothek denken.
Heutzutage gibt es viele Optionen, mit denen Sie Ihre eigenen Adapter erstellen können. So können Sie auf einfache Weise Listen und Raster dynamischer Elemente erstellen, die Sie auswählen, neu anordnen, Animationen, Teiler verwenden, Fußzeilen, Kopfzeilen usw. hinzufügen können.
Haben Sie keine Angst und probieren Sie RecyclerView aus. Sie können es lieben, wenn Sie eine Liste mit 100 aus dem Internet heruntergeladenen Elementen (wie Facebook-Nachrichten) in einer ListView und einer RecyclerView erstellen. Sie werden den Unterschied in der UX (Benutzer) sehen Erfahrung) Wenn Sie versuchen zu scrollen, wird die Test-App wahrscheinlich gestoppt, bevor Sie es überhaupt tun können.
Ich empfehle Ihnen, diese beiden Bibliotheken zu überprüfen, um einfache Adapter herzustellen:
FastAdapter von mikepenz
FlexibleAdapter von Davideas
quelle
RecyclerView-Informationen
Das
RecyclerView
wurde mit eingeführtAndroid 5.0 (Lollipop)
. Es ist in der Support-Bibliothek enthalten . Somit ist es mit Android API Level 7 kompatibel.Ähnlich wie das
ListView
,RecyclerView’s
ist Hauptidee zu schaffen , in einer Aufführung freundlich Auflistung Funktionalität. Der 'Recycler'-Teil des Namens dieser Ansicht ist nicht zufällig vorhanden. DerRecyclerView
kann tatsächlich die Gegenstände recyceln, mit denen er gerade arbeitet. Der Recyclingprozess erfolgt dank eines Musters namens View Holder .Vor- und Nachteile von RecyclerView
Vorteile:
Nachteile:
ListView-Informationen
Das
ListView
gibt es schon seit Beginn von Android. Es war sogar in verfügbarAPI Level 1
und hat den gleichen Zweck wie dasRecyclerView
.Die Verwendung der ListView ist eigentlich ganz einfach. In dieser Hinsicht ist es nicht wie sein Nachfolger. Die Lernkurve ist flüssiger als die für RecyclerView. Somit ist es leichter zu erfassen. Wir müssen uns nicht mit Dingen wie LayoutManager, ItemAnimator oder DiffUtil befassen.
Vor- und Nachteile von ListView
Vorteile:
ExpandableListView
Nachteile:
quelle
Es gibt viele Unterschiede zwischen ListView und RecyclerView, aber Sie sollten insbesondere Folgendes beachten:
quelle