2014-10-26 3 views
22

Ich habe gerade angefangen RecyclerView zu verwenden und ich habe es in vielen Funktionen wie Header, Footer, Teiler, Listenselektor fehlen gesehen, jetzt habe ich zweite Gedanken über die Verwendung von es anstelle von ListView.Was sind RecyclerView-Vorteile im Vergleich zu ListView?

Was sind die Vor- und Nachteile von RecyclerView im Vergleich zu ListView? Kann es komplexere Ansichten als ListView behandeln?

Ich benutze ListView bis jetzt und für einige, ist es Zeit auf RecyclerView umzusteigen oder ist es jetzt zu früh?

+1

alle diese Funktionen sind jetzt außerhalb der Ansicht, sehen http://www.grokkingandroid.com/first-glance -androids-recyclerview/ – pskink

Antwort

79

Mit dem Aufkommen von Android Lollipop, machte der RecyclerView seinen Weg offiziell. Der RecyclerView ist viel mehr leistungsstark, flexibel und eine große Verbesserung gegenüber ListView. Ich werde versuchen, Ihnen einen detaillierten Einblick zu geben.

Vorteile

1) ViewHolder Muster

In einem Listview wurde empfohlen, das ViewHolder Muster zu verwenden, aber es war nie ein Zwang. Im Fall von RecyclerView ist dies unter Verwendung der Klasse RecyclerView.ViewHolder obligatorisch. Dies ist einer der Hauptunterschiede zwischen dem ListView und dem RecyclerView.

Es macht die Dinge ein wenig komplexer in RecyclerView, aber eine Menge Probleme, die wir in der ListView konfrontiert wurden, werden effizient gelöst.

2) Layout

Dies ist eine weitere massive Erweiterung des RecyclerView gebracht. In einer ListView ist der einzige verfügbare Ansichtstyp die vertikale ListView. Es gibt keine offizielle Möglichkeit, eine horizontale ListView zu implementieren.

nun eine RecyclerView verwenden, können wir eine haben

i) LinearLayoutManager - die sowohl vertikale als auch horizontale Listen unterstützt,

ii) StaggeredLayoutManager - die Pinterest wie gestaffelten Listen unterstützt,

iii) GridLayoutManager - unterstützt die Anzeige von Gittern wie in den Galerie-Apps.

Und das Beste ist, dass wir alle diese dynamisch tun können, wie wir wollen.

3) Artikel Animator

Listviews zur Unterstützung guter Animationen fehlen, aber die RecyclerView bringt eine ganz neue Dimension hinzu. Mit der Klasse RecyclerView.ItemAnimator wird die Animation der Ansichten so einfach und intuitiv.

4) Artikel Dekoration

Bei Listviews, dynamisch Elemente Dekoration wie Ränder oder Teiler Zugabe war nie einfach. Aber im Falle von RecyclerView gibt die RecyclerView.ItemDecorator Klasse den Entwicklern eine riesige Kontrolle, macht die Dinge aber etwas zeitaufwendiger und komplexer.

5) OnItemTouchListener

Intercepting Artikel Klicks auf einem Listview war einfach, dank seiner AdapterView.OnItemClickListener Schnittstelle. Aber der RecyclerView gibt seinen Entwicklern viel mehr Macht und Kontrolle durch die RecyclerView.OnItemTouchListener, aber es kompliziert die Dinge ein bisschen für den Entwickler.

Nachteile

i) Es ist viel komplexer als eine Listenansicht.

ii) Es kann für einen Anfänger viel Zeit in Anspruch nehmen, einen RecyclerView vollständig zu verstehen.

iii) Es kann unnötigerweise Ihr Codierungsleben erschweren.

iv) Sie müssen mit es viel mehr Zeit zu verbringen, als Sie jemals für eine Listview benötigt

+0

Schöne Erklärung dude :) +1 –

+0

Schöne Erklärung ... Ich habe Probleme während der Erkennung der Position der Top-Sichtbare Sicht so, dass ich das Datum des Artikels anzeigen kann, während Scrollen wie WhatsApp tut ... irgendwelche Vorschläge diesbezüglich werden mir sehr helfen ... es war ein Stück Kuchen, wenn ich listview benutzt hätte ... danke im voraus ... – srv242

+0

Wenn ich Ihr Problem richtig verstehe, dann sollten Sie sich das mal ansehen, https://gist.github.com/mipreamble/b6d4b3d65b0b4775a2 2e # file-recyclerviewpositionhelper-java –