RecyclerView versus ListView

Van Android-ontwikkelaar (Lijsten en kaarten maken):

De RecyclerView-widget is een meer geavanceerde en flexibele versie van
Lijstweergave.

Ok, het klinkt cool, maar toen ik deze voorbeeldfoto zag, raakte ik echt in de war over het verschil tussen deze twee.

voer hier de afbeeldingsbeschrijving in

De bovenstaande afbeelding kan eenvoudig worden gemaakt door ListViewmet behulp van een aangepaste adapter.

Dus, in welke situatie moet je RecyclerView’sgebruiken?


Antwoord 1, autoriteit 100%

RecyclerView’sis gemaakt als een verbetering van ListView, dus ja, u kunt een bijgevoegde lijst maken met ListView-besturingselement, maar met behulp van RecyclerView’sis eenvoudiger omdat het:

  1. Hergebruikt cellen tijdens omhoog/omlaag scrollen– dit is mogelijk door View Holder te implementeren in de ListView-adapter, maar het was optioneel, terwijl in de RecycleViewhet is de standaard manier om adapter te schrijven.

  2. Koppelt lijst los van zijn container– zodat u lijstitems gemakkelijk tijdens runtime in de verschillende containers (linearLayout, gridLayout) kunt plaatsen met de instelling LayoutManager.

Voorbeeld:

mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
  1. Beziet algemene lijstacties– Animaties worden ontkoppeld en gedelegeerd aan ItemAnimator.

Er is meer over RecyclerView’s, maar ik denk dat dit de belangrijkste zijn.

Dus, tot slot, RecyclerView’sis een meer flexibele controle voor het verwerken van “lijstgegevens” die patronen van delegatie van zorgen volgt en voor zichzelf slechts één taak overlaat: items recyclen.


Antwoord 2, autoriteit 12%

Om lijstweergaven goed te laten presteren, moet je het houderpatroon implementeren, en dat is gemakkelijk te verknoeien, vooral als je de lijst wilt vullen met verschillende soorten weergaven.

De RecyclerView bakt dit patroon in, waardoor het moeilijker wordt om het te verknoeien. Het is ook flexibeler, waardoor het gemakkelijker is om verschillende lay-outs te hanteren, die niet recht lineair zijn, zoals een raster.


Antwoord 3, autoriteit 11%

ListViewis de voorouder van RecyclerView’s. Er waren veel dingen die ListViewniet of niet goed deden. Als je de tekortkomingen van de ListViewzou verzamelen en het probleem zou oplossen door de problemen in verschillende domeinen te abstraheren, zou je eindigen met zoiets als de recycler-weergave. Dit zijn de belangrijkste probleempunten met ListViews:

  • Niet afgedwongen ViewHergebruik voor dezelfde itemtypes (kijk naar een van de adapters die worden gebruikt in een ListView, als je de getView-methode bestudeert u zult zien dat niets een programmeur ervan weerhoudt om voor elke rij een nieuwe weergave te maken, zelfs als deze wordt doorgegeven via de variabele convertView)

  • Heeft kostbaar gebruik van findViewByIdniet voorkomen (zelfs als u weergaven hergebruikt zoals hierboven vermeld, was het mogelijk voor ontwikkelaars om findViewByIdte bellen om de weergegeven inhoud van onderliggende weergaven. Het hoofddoel van het ViewHolder-patroon in ListViewswas om de findViewById-aanroepen in de cache te plaatsen. Dit was echter alleen beschikbaar als u wist erover omdat het helemaal geen deel uitmaakte van het platform)

  • Alleen ondersteund verticaal scrollen met weergaven in rijen (Recycler-weergave geeft niet om waar weergaven worden geplaatst en hoe ze worden verplaatst, het wordt geabstraheerd in een LayoutManager. Een Recycler kan daarom ondersteuning bieden de traditionele ListViewzoals hierboven getoond, evenals dingen zoals de GridView, maar het is niet beperkt tot dat, het kan meer doen, maar je moet het programmeren doen voetenwerk om het voor elkaar te krijgen).

  • Animaties die moeten worden toegevoegd/verwijderd was geen gebruiksscenario dat werd overwogen. Het was helemaal aan jou om uit te zoeken hoe je dit aanpakt (vergelijk de RecyclerView. Adapterklassen informeren* methodeaanbiedingen v. ListViews om een ​​idee te krijgen).

Kortom RecyclerView’sis een flexibelere versie van de ListView, hoewel er mogelijk meer codering van uw kant nodig is.


Antwoord 4, autoriteit 5%

De RecyclerView’sis een nieuwe ViewGroup die voorbereid is om elke
adapter-gebaseerde weergave op een vergelijkbare manier. Het is verondersteld om de
opvolger van ListView and GridView, en het is te vinden in de
latest support-v7 version. De RecyclerView’sis ontwikkeld
met uitbreidbaarheidin gedachten, dus het is mogelijk om elke vorm van
lay-out die je kunt bedenken, maar niet zonder een beetje pijn in de kont
dosis.

Antwoord overgenomen van Antonio leiva

compile 'com.android.support:recyclerview-v7:27.0.0'

RecyclerView’sis inderdaad een powerful viewdan ListView.
Ga voor meer informatie naar Deze pagina.


Antwoord 5, autoriteit 5%

Hier volgen enkele belangrijke punten/verschillen tussen RecyclerView & Lijstweergave. Neem uw telefoontje verstandig aan.

Als ListView voor u werkt, is er geen reden om te migreren. Als je bent
als u een nieuwe gebruikersinterface schrijft, bent u misschien beter af met RecyclerView.

RecylerView heeft ingebouwde ViewHolder, hoeft onze eigen niet te implementeren
zoals in lijstweergave. Het ondersteunt ook melding op een bepaalde index

Dingen zoals het animeren van het toevoegen of verwijderen van items zijn al mogelijk
geïmplementeerd in de RecyclerView zonder dat u iets hoeft te doen

We kunnen een lay-outmanager koppelen aan een RecyclerView, dit kan zijn:
gebruikt voor het verkrijgen van willekeurige weergaven in recycleview terwijl dit een beperking was
in ListView In een ListView is het enige beschikbare type weergave de
verticale lijstweergave. Er is geen officiële manier om zelfs maar een te implementeren
horizontale lijstweergave. Nu we een RecyclerView gebruiken, kunnen we een

i) LinearLayoutManager – die zowel verticaal als horizontaal ondersteunt
lijsten, ii) StaggeredLayoutManager – die Pinterest like . ondersteunt
gespreide lijsten, iii) GridLayoutManager – die weergave ondersteunt
rasters zoals te zien in Galerij-apps.

En het beste is dat we dit allemaal dynamisch kunnen doen zoals we willen.


Antwoord 6, autoriteit 4%

Groot voordeel :

ViewHolderis standaard niet beschikbaar in ListView. We zullen expliciet creëren binnen de getView().
RecyclerView’sheeft ingebouwde ViewHolder.


Antwoord 7, autoriteit 2%

Voordelen van RecyclerView boven lijstweergave:

  1. Bevat standaard ViewHolder.

  2. Eenvoudige animaties.

  3. Ondersteunt horizontale, raster- en verspringende lay-outs

Voordelen van listView boven recyclerView :

  1. Eenvoudig toe te voegen scheidingswand.

  2. Kan ingebouwde arrayAdapter gebruiken voor eenvoudige, duidelijke lijsten

  3. Ondersteunt kop- en voettekst .

  4. Ondersteunt OnItemClickListner .


Antwoord 8

Ik denk dat het belangrijkste en grootste verschil dat ze hebben, is dat ListViewnaar de positie van het item zoekt tijdens het maken of plaatsen, terwijl RecyclerView’snaar de soort van het artikel. als er een ander item van hetzelfde type is gemaakt, maakt RecyclerView’shet niet opnieuw. Het vraagt ​​eerst een adapter en dan vraagt ​​het aan de gerecyclede pool, als de gerecyclede pool zegt “ja, ik heb een soortgelijk type gemaakt”, dan probeert RecyclerView’sniet hetzelfde type te maken. ListViewheeft niet zo’n poolingmechanisme.


Antwoord 9

Naast bovenstaande verschillen zijn er nog een paar:

  1. RV scheidt het maken van weergaven en het binden van gegevens aan weergave.
    In LV moet u controleren of convertView null is of niet voor het maken van een weergave, voordat u er gegevens aan bindt.
    Dus in het geval van RV wordt er alleen een weergave gemaakt als dat nodig is, maar in het geval van LV kan men de controle voor convertview missen en wordt er elke keer een weergave gemaakt.

  2. Schakelen tussen raster en lijst is nu gemakkelijker met LayoutManager.

  3. Het is niet nodig om alle items op de hoogte te stellen en bij te werken, zelfs als slechts één item wordt gewijzigd.

  4. Men moest view caching implementeren in het geval van LV.
    Het wordt standaard geleverd in RV. (Er is een verschil tussen view caching en recycling.)

  5. Zeer eenvoudige itemanimaties in het geval van RV.


Antwoord 10

RecyclerBekijk info

De RecyclerView’sis geïntroduceerd met Android 5.0 (Lollipop). het is opgenomen in de Ondersteuningsbibliotheek. Het is dus compatibel met Android API Level 7.

Net als de ListView, is het hoofdidee van RecyclerView’shet aanbieden van listingfunctionaliteit op een prestatievriendelijke manier. Het ‘Recycler’-gedeelte van de naam van deze weergave is er niet toevallig. De RecyclerView’skan de items waarmee het momenteel werkt daadwerkelijk recyclen. Het recyclingproces wordt gedaan dankzij een patroon genaamd Bekijk houder.

Voors & Nadelen van RecyclerView

Pluspunten:

  • geïntegreerde animaties voor het toevoegen, bijwerken en verwijderen van items
  • dwingt het hergebruik van weergaven af ​​door het ViewHolder-patroon te gebruiken
  • ondersteunt zowel rasters als lijsten
  • ondersteunt verticaal en horizontaal scrollen
  • kan samen met DiffUtil worden gebruikt

Nadelen:

  • voegt complexiteit toe
  • geen OnItemClickListener

LijstBekijk info

De ListViewbestaat al sinds het allereerste begin van Android. Het was zelfs beschikbaar in API Level 1en heeft hetzelfde doel als de RecyclerView’s.

Het gebruik van de ListView is eigenlijk heel eenvoudig. In dit opzicht is het niet zoals zijn opvolger. De leercurve is soepeler dan die voor de RecyclerView. Zo is het makkelijker te vatten. We hebben niet te maken met zaken als de LayoutManager, ItemAnimator of DiffUtil.

Voors & Nadelen van ListView

Voors:

  • eenvoudig gebruik
  • standaardadapters
  • beschikbare OnItemClickListener
  • het is de basis van de ExpandableListView

Nadelen:

  • omarmt het gebruik van het ViewHolder-patroon niet

Antwoord 11

Naar mijn mening is RecyclerView’sgemaakt om het probleem aan te pakken met het recyclepatroon dat in lijstweergaven wordt gebruikt, omdat het het leven van de ontwikkelaar moeilijker maakte.
Al het andere kon je min of meer aan.
Ik gebruik bijvoorbeeld dezelfde adapter voor ListViewen GridViewhet maakt in beide weergaven niet uit, de getView, getItemCount, getTypeCountwordt gebruikt, dus het is hetzelfde.
RecyclerView’sis niet nodig als ListViewmet ListAdapterof GridViewmet netwerkadapters al voor u werkt.
Als je het patroon ViewHoldercorrect in je lijstweergaven hebt geïmplementeerd, zie je geen grote verbetering ten opzichte van RecycleView.


Antwoord 12

Ik heb een beetje met RecyclerView’sgewerkt en geef nog steeds de voorkeur aan ListView.

  1. Natuurlijk gebruiken ze allebei ViewHolders, dus dit is geen voordeel.

  2. Een RecyclerView’sis moeilijker te coderen.

  3. Een RecyclerView’sbevat geen kop- en voettekst, dus het is een min.

  4. Een ListViewvereist geen ViewHolder. In gevallen waar je een lijst met secties of subheaders wilt hebben, zou het een goed idee zijn om onafhankelijke items te maken (zonder een ViewHolder), het is gemakkelijker en vereist geen aparte klassen.


Antwoord 13

  1. U kunt een interface gebruiken om een ​​kliklistener te bieden. ik gebruik dit
    techniek ook met ListViews.
  2. Geen scheidingslijn: voeg eenvoudig een weergave toe aan uw rij met een breedte van
    match_parent en een hoogte van 1dp en geef het een achtergrondkleur.
  3. Gebruik gewoon een StateList-kiezer voor de rij-achtergrond.
  4. addHeaderView kan ook worden vermeden in ListViews: zet gewoon de
    Koptekst buiten de weergave.

Dus, als efficiëntie uw zorg is, dan is het inderdaad een goed idee om een ​​ListView te vervangen door een RecyclerView.


Antwoord 14

Er zijn veel verschillen tussen ListView en RecyclerView, maar let vooral op het volgende:

  • Het ViewHolder-patroon is volledig optioneel in ListView, maar is ingebakken in RecyclerView.
  • ListView ondersteunt alleen verticaal scrollen, maar RecyclerView is niet beperkt tot verticaal scrollende lijsten.

Antwoord 15

Eenvoudig antwoord: u moet RecyclerView gebruiken in een situatie waarin u veel items wilt weergeven en het aantal ervan dynamisch is. ListView mag alleen worden gebruikt als het aantal items altijd hetzelfde is en beperkt is tot de schermgrootte.

Je vindt het moeilijker omdat je alleen denkt met de Android-bibliotheek in gedachten.

Vandaag de dag zijn er veel opties die u helpen bij het bouwen van uw eigen adapters, waardoor het gemakkelijk wordt om lijsten en rasters met dynamische items te maken die u kunt kiezen, opnieuw kunt ordenen, animatie, scheidingslijnen kunt gebruiken, voetteksten, kopteksten, enz., enz. kunt toevoegen.

Wees niet bang en probeer RecyclerView, je kunt er dol op zijn door een lijst te maken van 100 items die van internet zijn gedownload (zoals Facebook-nieuws) in een ListView en een RecyclerView, je zult het verschil zien in de UX (gebruikerservaring) wanneer u probeert te scrollen, stopt de test-app waarschijnlijk voordat u het zelfs maar kunt doen.

Ik raad je aan om deze twee bibliotheken te controleren voor het maken van eenvoudige adapters:

FastAdapter door mikepenz

FlexibleAdapter door davideas


Antwoord 16

Ik wil alleen benadrukken dat RecyclerView een onderdeel is van het compatibiliteitspakket. Het betekent dat in plaats van de functie en code van het besturingssysteem te gebruiken, elke toepassing een eigen RecyclerView-implementatie heeft. Mogelijk kan een functie die vergelijkbaar is met RecyclerView een onderdeel zijn van een toekomstig besturingssysteem en kan het nuttig zijn om het vanaf daar te gebruiken. Harmony OS zal bijvoorbeeld binnenkort verschijnen. De licentie voor het compatibiliteitspakket kan in de toekomst worden gewijzigd en dit kan een implicatie zijn. Overzicht van nadelen:

  1. licentie
  2. een grotere voetafdruk, vooral als onderdeel van veel apps
  3. verliezen in efficiëntie als een of andere functie van het besturingssysteem aanwezig kan zijn

Maar goed, een implementatie van sommige functionaliteit, zoals het vegen van items, komt van RecyclerView.

Alles wat hierboven is gezegd, moet in overweging worden genomen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

2 × two =

Other episodes