1. Visualizza i titolari
In ListView, la definizione dei titolari di viste era un approccio suggerito per mantenere i riferimenti per le viste. Ma non era una compulsione. Sebbene non facendolo, ListView utilizzato mostra dati non aggiornati. Un altro grave svantaggio di non utilizzare i detentori di visualizzazioni potrebbe portare a una pesante operazione di ricerca di visualizzazioni da parte degli ID ogni volta. Ciò ha comportato un rallentamento di ListView.
Questo problema è risolto in RecylerView mediante l'uso della classe RecyclerView.ViewHolder. Questa è una delle principali differenze in RecyclerView e ListView. Quando si implementa un RecyclerView, questa classe viene utilizzata per definire un oggetto ViewHolder che viene utilizzato dall'adattatore per associare ViewHolder con una posizione. Un altro punto da notare qui è che durante l'implementazione dell'adattatore per RecyclerView, è obbligatorio fornire un ViewHolder. Questo rende l'implementazione un po 'complessa, ma risolve i problemi affrontati in ListView.
2. Responsabile del layout
Quando si parla di ListView, è disponibile solo un tipo di ListView, ovvero ListView verticale. Non è possibile implementare un ListView con scorrimento orizzontale. So che ci sono modi per implementare una pergamena orizzontale, ma credetemi non è stato progettato per funzionare in quel modo.
Ma ora quando guardiamo Android RecyclerView vs ListView, abbiamo anche il supporto per le raccolte orizzontali. In realtà supporta più tipi di elenchi. Per supportare più tipi di elenchi utilizza la classe RecyclerView.LayoutManager. Questa è una novità che ListView non ha. RecyclerView supporta tre tipi di gestori layout predefiniti:
LinearLayoutManager - Questo è il gestore di layout più comunemente usato nel caso di RecyclerView. Attraverso questo, possiamo creare liste di scorrimento sia orizzontali che verticali. StaggeredGridLayoutManager: tramite questo gestore di layout, possiamo creare elenchi sfalsati. Proprio come la schermata Pinterest. GridLayoutManager– Questo gestore di layout può essere utilizzato per visualizzare griglie, come qualsiasi galleria di immagini.
3. Animatore oggetto
Le animazioni in un elenco sono una dimensione completamente nuova, che ha infinite possibilità. In un ListView, come tale, non ci sono disposizioni speciali attraverso le quali è possibile animare, aggiungere o eliminare elementi. Invece in seguito, come Android evoluto ViewPropertyAnimator è stato suggerito da Chet Haase di Google in questo tutorial video per le animazioni in ListView.
D'altra parte, confrontando Android RecyclerView con ListView, ha la classe RecyclerView.ItemAnimator per la gestione delle animazioni. Attraverso questa classe è possibile definire animazioni personalizzate per eventi di aggiunta, eliminazione e spostamento di elementi. Inoltre fornisce un DefaultItemAnimator, nel caso in cui non siano necessarie personalizzazioni.
4. Adattatore
Gli adattatori ListView erano semplici da implementare. Avevano un metodo principale getView in cui accadeva tutta la magia. Dove le opinioni erano legate a una posizione. Inoltre avevano un metodo interessante registerDataSetObserver in cui si può impostare un osservatore proprio nell'adattatore. Questa funzione è presente anche in RecyclerView, ma viene utilizzata la classe RecyclerView.AdapterDataObserver. Ma il punto a favore di ListView è che supporta tre implementazioni predefinite degli adattatori:
ArrayAdapter CursorAdapter SimpleCursorAdapter Considerando l'adattatore RecyclerView, ha tutte le funzionalità che gli adattatori ListView avevano tranne il supporto integrato per cursori DB e ArrayLists. In RecyclerView.Adapter da ora dobbiamo realizzare un'implementazione personalizzata per fornire dati all'adattatore. Proprio come un BaseAdapter fa per ListViews. Sebbene se desideri saperne di più sull'implementazione dell'adattatore RecyclerView, fai riferimento all'esempio di RecyclerView per Android.
5. Notifica della modifica dei dati
Quando si lavora con un ListView, se il set di dati viene modificato, è necessario chiamare il metodo notifyDataSetChanged dell'adattatore sottostante per aggiornare i dati. Oppure imposta il metodo setNotifyOnChange su true nel caso in cui desideri chiamare automaticamente il metodo notifyDataSetChanged. Ma in entrambi i casi il risultato è molto pesante nella lista. Fondamentalmente aggiorna le visualizzazioni dell'elenco.
Al contrario, in un adattatore RecyclerView, se un singolo articolo o un intervallo di articoli sono cambiati, ci sono metodi per notificare la modifica di conseguenza. Quelli sono notifyItemChanged e notifyItemRangeChanged rispettivamente e molti altri come:
notifyItemInsterted notifyItemMoved notifyItemRangeInsterted notifyItemRangeRemoved E, naturalmente, ha il metodo originale per aggiornare l'intero elenco, cioè notificationDataSetChanged, che notifica che è stato modificato l'intero set di dati.
6. Decorazione dell'articolo
Per visualizzare divisori personalizzati in un ListView, si sarebbe potuto facilmente aggiungere questi parametri nel XML ListView:
XHTML android: divider = "@ android: color / transparent" android: dividerHeight = "5dp" 1 2 android: divider = "@ android: color / transparent" android: dividerHeight = "5dp" La parte interessante di Android RecyclerView è che, per ora non mostra un divisore tra gli elementi per impostazione predefinita. Anche se i ragazzi di Google devono averlo lasciato fuori per la personalizzazione, intenzionalmente. Ma questo aumenta notevolmente lo sforzo per uno sviluppatore. Se si desidera aggiungere un divisore tra gli elementi, potrebbe essere necessario eseguire un'implementazione personalizzata utilizzando la classe RecyclerView.ItemDecoration.
Oppure puoi applicare un hack utilizzando questo file da esempi ufficiali: DividerItemDecoration.java
7. OnItemTouchListener
Le visualizzazioni elenco avevano una semplice implementazione per il rilevamento dei clic, ad esempio mediante l'interfaccia AdapterView.OnItemClickListener.
D'altra parte, l'interfaccia RecyclerView.OnItemTouchListener viene utilizzata per rilevare eventi touch in Android RecyclerView. Ciò complica leggermente l'implementazione, ma fornisce un maggiore controllo allo sviluppatore per l'intercettazione di eventi tattili. La documentazione ufficiale afferma che può essere utile per manipolazioni gestuali in quanto intercetta un evento touch prima che venga consegnato a RecyclerView.
RecyclerView
è molto più veloce e versatile con un'API molto migliore. Cose come animare l'aggiunta o la rimozione di elementi sono già implementate nelRecyclerView
senza che tu debba fare nulla. Non c'è dubbio, buttaloListView
nel cestino,RecyclerView
è qui per rubare lo spettacolo.