RecyclerView

The world of RecyclerView – parte 1

Posted by on Mar 23, 2015 in Android, RecyclerView | 0 comments

The world of RecyclerView – parte 1

Il  titolo di questa serie di articoli riprende il titolo di una delle più interessanti sessioni del Google I/O del 2010: The world of ListView : la serie invece tratterà  delle RecyclerView.
In quel talk  Romain Guy e Adam Powell spiegavano il mondo delle ListView: uno dei widget più usati e indispensabili nello sviluppo Android.
Il mondo delle RecyclerView è iniziato al Google I/O 2014 con Android 5.0 L chiamato dopo Android Lollipop.
Le Recyclerview e le ListView hanno molto in comune: la visualizzazione di elementi dello stesso tipo.
Si suppone che le recyclerview sostituiranno le listview.

La Recylerview è più avanzata,  flessibile e  veloce  nella gestione di grandi liste di dati. Quando l’ utente scorre verso l’ alto o verso il basso entra in gioco il riciclo degli elementi non più visualizzati: questo riciclo o riutilizzo delle view rende le  recylerview molto efficenti.
Il concetto appare molto simile alle ListView ma con un approcio diverso.
Mentre nelle Listview tutto è collegato: base dati, layout, immagini, componenti,animazioni; nelle recylerview non c’è questo stretto legame: la recyclerview non si preoccupa dove posizionare  gli elementi, nè delle immagini o  layout ma si preoccupa soprattutto del riciclo o riutilizzo delle view e rendere tutto più veloce.
Uno dei benefici di questo diverso approcio  è la possibilità di cambiare (in runtime) tipo di visualizzazione: da visualizzazione a lista verticale a lista orizzontale, da vista a card a vista custom. Vedremo in seguito qualche esempio.
Per la visualizzazione, i layout, la gestione dei  dati la recyclerview delega questi compiti alle sotto classi:

RecyclerView.Adapter
Simile all’ adapter che conosciamo si occupa di ricevere i dati e di creare le view.
Non  utilizzeremo  più ArrayAdapter<Model> ma RecyclerView.Adapter<ReclyclerView.ViewHolder>

RecyclerView.ViewHolder
Crea una cache delle view che servono alla creazione della lista.

RecyclerView.LayoutManager
Si occupa di posizionare le view e di determinare il tipo di visualizzazione.
La libreria mette a disposizione 3 differenti layout manager: LinearLayoutManagerGridLayoutManager,StaggeredGridLayoutManager

RecyclerView.ItemDecoration
Modifica l’ aspetto grafico degli item.

RecyclerView.ItemAnimator
Gestisce le animazioni. In genere le 3 principali azioni: adding, removing and moving

Queste sono le classi che permettono quella flessibilità di cui ho parlato prima.
Le recyclerview sono state sviluppate con lo scopo  di migliorare l ‘ estendibilità (extensibility).
Per cambiare totalmente visualizzazione scegliamo uno dei 3  LayoutManager o uno custom, per avere più  animazioni  personalizziamo  ItemAnimator,  per cambiare  l’ aspetto degli item usiamo ItemDecoration.

Merita attenzione la classe ViewHolder. Il pattern viewholder è sempre stato raccomandato dal team di google per rendere efficente la listview, e nella recylcerview (in ritardo secondo me) ha una vera e propria implementazione e ha un ruolo più importante.

Dimenticavo che possiamo usare le recyclerview anche nelle precedenti versioni di Android perchè sono state aggiunte alle librerie support.
Per Android Studio la dipendenza è:

Nella seconda parte della serie di articoli dedicati alle recyclerview spiegherò un esempio basilare e nei successivi articoli vedremo qualche esempio di personalizzazione e animazione.
Edit: aggiungo il link del primo esempio: RecyclerViewExample

Read More