Vom Android-Entwickler ( Erstellen von Listen und Karten ):
Das RecyclerView-Widget ist eine erweiterte und flexible Version von Listenansicht.
Okay, das hört sich cool an, aber als ich dieses Beispielbild sah, wurde ich wirklich verwirrt über den Unterschied zwischen den beiden.
Das obige Bild kann leicht mit ListView
mit benutzerdefiniertem Adapter erstellt werden.
In welcher Situation sollte man also RecyclerView
verwenden?
RecyclerView wurde als ListView-Verbesserung erstellt. Sie können also eine angehängte Liste mit dem ListView-Steuerelement erstellen. Die Verwendung von RecyclerView ist jedoch einfacher:
Verwendet Zellen beim Scrollen nach oben/unten wiederverwenden - Dies ist möglich, wenn View Holder im listView-Adapter implementiert wird. Dies war jedoch optional, während in RecycleView die Standardmethode zum Schreiben des Adapters verwendet wird.
Entkoppelt die Liste aus ihrem Container - so dass Sie Listenelemente zur Laufzeit problemlos in die verschiedenen Container (linearLayout, gridLayout) mit der Einstellung LayoutManager einfügen können.
Beispiel:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
Es gibt mehr über RecyclerView, aber ich denke, dass diese Punkte die wichtigsten sind.
Zusammenfassend lässt sich festhalten, dass RecyclerView ein flexibleres Steuerelement für den Umgang mit "Listendaten" ist, das Mustern der Delegierung von Bedenken folgt und sich nur eine Aufgabe lässt - das Recycling von Elementen.
Damit Listenansichten eine gute Leistung bieten, müssen Sie das Haltemuster implementieren. Dies ist besonders bei dem Auffüllen der Liste mit verschiedenen Arten von Ansichten leicht zu tun.
Der RecyclerView fügt dieses Muster ein, wodurch das Durcheinander erschwert wird. Es ist außerdem flexibler und erleichtert die Handhabung verschiedener Layouts, die nicht geradlinig sind, wie ein Raster.
ListView
ist der Vorfahr von RecyclerView
. Es gab viele Dinge, die ListView
entweder nicht oder nicht gut machte. Wenn Sie die Mängel von ListView
erfassen und das Problem dadurch lösen würden, dass Sie die Probleme in verschiedene Domänen abstrahieren, würden Sie am Ende so etwas wie die Recycling-Ansicht sehen. Hier sind die Hauptprobleme bei ListViews:
View
Wiederverwendung für dieselben Elementtypen nicht erzwungen (sehen Sie sich einen der Adapter an, der in ListView
verwendet wird. Wenn Sie die getView-Methode studieren, werden Sie feststellen, dass ein Programmierer nichts daran hindert, einen neuen zu erstellen Ansicht für jede Zeile, auch wenn eine über die Variable convertView
übergeben wird)
Verhindert nicht kostspielige findViewById
-Verwendungen (Selbst wenn Sie wie oben erwähnt Ansichten recyceln, war es für devs möglich, findViewById
aufzurufen, um den angezeigten Inhalt von untergeordneten Ansichten zu aktualisieren. Der Hauptzweck des ViewHolder
pattern in ListViews
diente zur Zwischenspeicherung der findViewById
-Aufrufe. Dies war jedoch nur verfügbar, wenn Sie davon wussten, da es nicht Teil der Plattform war.)
Nur unterstütztes vertikales Scrollen mit angezeigten Reihenansichten (Die Ansicht des Recyclers ist nicht darauf aus, wo die Ansichten platziert werden und wie sie verschoben werden. Es wird in ein LayoutManager
abstrahiert. Ein Recycler kann daher das traditionelle ListView
wie gezeigt unterstützen oben, sowie Dinge wie GridView
, aber es ist nicht darauf beschränkt, es kann mehr tun, aber Sie müssen die Programmierarbeit erledigen, um dies zu ermöglichen).
Hinzufügen/Entfernen von Animationen war kein Anwendungsfall, der berücksichtigt wurde. Es lag ganz bei Ihnen, wie Sie vorgehen (vergleiche RecyclerView. Adapterklassen benachrichtigen * Methodenangebote v. ListViews, um eine Vorstellung zu bekommen).
Kurz gesagt, RecyclerView
ist eine flexiblere Version von ListView
, obwohl möglicherweise mehr Codierung von Ihrer Seite erforderlich ist.
Die
RecyclerView
ist eine neue ViewGroup, die bereit ist, beliebige .__ zu rendern. Adapter-basierte Ansicht auf ähnliche Weise. Es wird angenommen, dass der Nachfolger vonListView and GridView
und ist in der .__ zu finden.latest support-v7 version
. DieRecyclerView
wurde entwickelt im Hinblick auf Erweiterbarkeit ist es möglich, jede Art von .__ zu erstellen. Layout, das man sich vorstellen kann, aber nicht ohne ein bisschen Schmerz in den Arsch. Dosis.
Antwort aus Antonio leiva
compile 'com.Android.support:recyclerview-v7:27.0.0'
RecyclerView
ist in der Tat ein powerful view
als ListView
. Für weitere Informationen besuchen Sie Diese Seite .
Es folgen einige wichtige Punkte/Unterschiede zwischen RecyclerView und ListView. Nehmen Sie Ihren Anruf mit Bedacht entgegen.
Wenn ListView für Sie funktioniert, gibt es keinen Grund für die Migration. Wenn du bist Wenn Sie eine neue Benutzeroberfläche erstellen, ist RecyclerView möglicherweise besser geeignet.
RecylerView hat ViewHolder eingebaut, es ist nicht notwendig, unser eigenes .__ zu implementieren. wie in listView. Es unterstützt auch Benachrichtigung bei bestimmten Index
Dinge, wie das Hinzufügen oder Entfernen von Objekten animieren, sind bereits im RecyclerView implementiert, ohne dass Sie etwas tun müssen
Wir können einen Layout-Manager mit einer RecyclerView verknüpfen. Dies kann .__ sein. Wird verwendet, um zufällige Ansichten in recycleview zu erhalten, während dies Einschränkung war. in ListView In einer ListView ist der einzige verfügbare Sichttyp die vertikale ListView. Es gibt keinen offiziellen Weg, um eine .__ zu implementieren. horizontale ListView. Wenn wir jetzt eine RecyclerView verwenden, können wir eine
i) LinearLayoutManager - unterstützt sowohl vertikal als auch horizontal Listen, ii) StaggeredLayoutManager - der Pinterest wie .__ unterstützt. gestaffelte Listen, iii) GridLayoutManager - unterstützt die Anzeige von Gitter wie in den Galerie-Apps.
Und das Beste ist, dass wir das alles dynamisch machen können, wenn wir wollen.
Großer Vorteil :
ViewHolder
ist standardmäßig in ListView
nicht verfügbar. Wir werden explizit in der getView()
.RecyclerView
erstellen - hat Viewholder
eingebaut.
Ich denke, der größte und größte Unterschied besteht darin, dass ListView
beim Erstellen oder Platzieren des Artikels nach der Position des Artikels sucht, andererseits RecyclerView
nach dem Typ des Artikels. Wenn ein anderes Element mit demselben Typ erstellt wurde, erstellt RecyclerView
es nicht erneut. Es fragt zuerst den Adapter und fragt dann nach recyceltem Pool, wenn der recycelte Pool sagt: "Ja, ich habe einen ähnlichen Typ erstellt", dann versucht RecyclerView
nicht denselben Typ zu erstellen. ListView
hat keinen solchen Pooling-Mechanismus.
Neben den obigen Unterschieden gibt es noch einige weitere:
RV trennt die Ansichtserzeugung und das Binden von Daten für die Ansicht . In LV müssen Sie prüfen, ob convertView zum Erstellen der Ansicht null ist oder nicht, bevor Sie Daten daran binden . Im Fall von RV wird dies angezeigt Wird nur erstellt, wenn es benötigt wird, aber im Falle von LV kann man die Prüfung für convertview verpassen und erstellt jedes Mal eine Ansicht.
Mit LayoutManager ist das Umschalten zwischen Raster und Liste jetzt einfacher.
Es ist nicht erforderlich, alle Elemente zu benachrichtigen und zu aktualisieren, selbst wenn nur ein Element geändert wird.
Im Falle von LV ..__ musste View-Caching implementiert werden, das standardmäßig in RV bereitgestellt wird. (Es besteht ein Unterschied zwischen dem Zwischenspeichern von Ansichten und dem Recycling.)
Sehr einfache Artikelanimationen bei Wohnmobilen.
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 Trenner hinzufügen.
Kann eingebauten arrayAdapter für einfache, einfache Listen verwenden
Unterstützt Kopf- und Fußzeile.
Unterstützt OnItemClickListner.
Ich habe etwas mit RecyclerView
gearbeitet und bevorzuge ListView
.
Sicher, beide verwenden ViewHolders
, also ist dies kein Vorteil.
Eine RecyclerView
ist schwieriger beim Codieren.
Eine RecyclerView
enthält keine Kopf- und Fußzeile, also ein Minuszeichen.
Für eine ListView
muss kein ViewHolder erstellt werden. Wenn Sie eine Liste mit Abschnitten oder Unterüberschriften erstellen möchten, empfiehlt es sich, unabhängige Elemente (ohne ViewHolder) zu erstellen. Dies ist einfacher und erfordert keine separaten Klassen.
Meiner Meinung nach wurde RecyclerView
gemacht, um das Problem mit dem in den Listviews verwendeten Recycling-Muster zu beheben, da dies das Leben des Entwicklers schwieriger machte. Alle anderen, mit denen Sie mehr oder weniger umgehen könnten, benutze ich zum Beispiel denselben Adapter ListView
und GridView
Es ist in beiden Ansichten nicht wichtig, dass getView
, getItemCount
, getTypeCount
verwendet wird. Es ist also dieselbe Variable .RecyclerView
nicht erforderlich, wenn ListView
mit ListAdapter
oder GridView
bereits mit Gitteradaptern arbeitet. Wenn Sie das ViewHolder
-Muster in Ihren Listenansichten korrekt implementiert haben, werden Sie über RecycleView
keine großen Verbesserungen feststellen.
Wenn also die Effizienz Ihr Anliegen ist, ist es eine gute Idee, eine ListView durch eine RecyclerView zu ersetzen.
RecyclerView info
Das RecyclerView
wurde mit Android 5.0 (Lollipop)
eingeführt. es ist in der Support Library enthalten. Somit ist es kompatibel mit Android API Level 7.
Ähnlich wie bei ListView
, RecyclerView’s
besteht die Hauptidee darin, die Auflistungsfunktionalität auf leistungsfreundliche Weise bereitzustellen. Der 'Recycler'-Teil des Namens dieser Ansicht ist nicht zufällig vorhanden. Das RecyclerView
kann tatsächlich die Elemente recyceln, mit denen es gerade arbeitet. Der Recyclingprozess wird mithilfe eines Musters namens Ansichtshalter durchgeführt.
Vor- und Nachteile von RecyclerView
Vorteile:
Nachteile:
ListView info
Das ListView
gibt es seit den Anfängen von Android. Es war sogar in API Level 1
verfügbar und hat den gleichen Zweck wie das RecyclerView
.
Die Benutzung der ListView ist eigentlich ganz einfach. In dieser Hinsicht ist es nicht wie sein Nachfolger. Die Lernkurve ist flüssiger als beim 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:
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.
Heute gibt es eine Vielzahl von Optionen, mit denen Sie Ihre eigenen Adapter erstellen können. So können Sie Listen und Raster dynamischer Elemente erstellen, die Sie auswählen, neu anordnen, Animationen, Trennlinien verwenden, Fußzeilen, Kopfzeilen usw. hinzufügen können.
Lassen Sie sich nicht erschrecken und versuchen Sie es mit RecyclerView. Sie werden es lieben, wenn Sie eine Liste mit 100 aus dem Internet heruntergeladenen Elementen (wie Facebook-News) in einem ListView und einem RecyclerView erstellen Wenn Sie versuchen, einen Bildlauf durchzuführen, wird die Test-App möglicherweise angehalten, bevor Sie überhaupt einen Bildlauf durchführen können.
Ich empfehle Ihnen, diese beiden Bibliotheken zu überprüfen, um einfache Adapter zu erstellen: