Tra le nuove API Lollipop e anche nell'ultima versione della support library è disponibile questa view, altamente personalizzabile e che va oltre il semplice concetto di ListView o GridView.
RecyclerView permette infatti di ottenere praticamente tutte le configurazioni che desideriamo estendendo alcune classi.
Qui sotto un esempio di implementazione.
build.gradle
i
Queste due librerie vi permetteranno di utilizzare, come ovvio, le nuove API anche su dispositivi pre-lollipop
fragment_main.xml
i
Un semplice layout contenente solo la nostra RecyclerView
MyFragment.java
i
Non implemento tutto il codice relativo al fragment ma solo la parte che ci interessa per la configurazione iniziale della RecyclerView.
In questo caso specifico io vario la visualizzazione degli elementi in base all'orientazione del dispositivo.
La RecyclerView fondamentalmente si basa sull'utilizzo di LayoutManagers, per appunto, gestire la visualizzazione degli elementi.
In questo caso utilizzo un GridLayoutManager, definendo nel costruttore quante colonne dovrà avere la nostra RecyclerView(2);
Lo step successivo è definire lo SpanSizeLookup, una classe che andremo ad estendere e che sarà necessaria per stabilire quante colonne dovrà occupare la singola riga della lista (in questo caso 1 o 2) [vedi sotto]
GridSpanSizeLookup.java
i
Volendo cambiare il tipo di visualizzazione in base al cambio di orientazione del dispositivo, nel costruttore della classe passo anche la configurazione del dispositivo e tramite un case statement ritorno il numero di colonne che il singolo elemento deve occupare.
MyViewHolder.java
i
Questa classe funziona quasi esattamente come quella che fino ad ora avevamo utilizzato nelle classiche ListView e GridView per questioni di performance.
MyAdapter.java
i
Il nostro adapter ora dovrà estendere RecyclerView.Adapter<T>. Il funzionamento è fondamentalmente il medesimo degli altri adapter (Es: BaseAdapter)
MyFragment.java
i
Il modo di impostazione dell'adapter non cambia.
Buon coding