Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Lollipop
Code

Introduzione a RecyclerView e CardView su Android

by
Difficulty:IntermediateLength:LongLanguages:

Italian (Italiano) translation by Fabio Pantano (you can also view the original English article)

Se sei interessato a costruire un'applicazione Android che fa uso di elenchi per la visualizzazione di dati, Android Lollipop include due nuovi widget per facilitarti la vita: RecyclerView e CardView. Con questi widget risulterà semplice fornire alla tua app un aspetto conforme alle linee guida indicate nelle specifiche del material design di Google.

Prerequisiti

Per proseguire si consiglia di utilizzare l'ultima versione di Android Studio. Puoi scaricarla dal sito web Android Developer.

1. Supporta le versioni precedenti

Fino a ora, meno del 2% dei dispositivi Android ha Android Lollipop installato. Tuttavia, grazie alla libreria di supporto v7, su dispositivi con vecchi Android è possibile utilizzare i widget RecyclerView e CardView aggiungendo le seguenti righe nella sezione dipendenze nel file build.grade:

2. Creare una CardView

Una CardView è un ViewGroup. Come altri ViewGroup, può essere aggiunta alla tua Activity o Fragment utilizzando un file XML di layout.

Per creare una CardView vuota, aggiungere il seguente codice al layout XML, come illustrato nel seguente codice:

Come esempio più pratico, procediamo a creare un LinearLayout posizionando al suo interno una CardView. La CardView potrebbe rappresentare, per esempio, una persona e contenere i seguenti elementi:

  • un TextView per visualizzare il nome della persona
  • un TextView per visualizzare l'età della persona
  • un ImageView per visualizzare la foto della persona

Ecco come sarà il nostro codice XML:

Se questo file XML venisse usato come layout di una Activity, e con i campi TextView e ImageView impostati su valori significativi, questo sarebbe il risultato su un dispositivo Android:

A Stand-alone Card

3. Creare una RecyclerView

Passo 1: definirla in un layout

Utilizzare un'istanza RecyclerView è leggermente più complicato. Tuttavia, definirla in un file XML di layout è abbastanza semplice. È possibile definirla in un layout in questo modo:

Per ottenere un puntatore ad esso nella tua Activity, utilizza il seguente codice:

Se si è certi che le dimensioni del RecyclerView non cambieranno, è possibile aggiungere la seguente stringa per migliorare le prestazioni:

Passo 2: utilizzare un LayoutManager

A differenza di ListView, un RecyclerView necessita di un LayoutManager per gestire il posizionamento dei relativi elementi. È possibile definire il proprio LayoutManager estendendo la classe RecyclerView.LayoutManager. Tuttavia, nella maggior parte dei casi, è possibile utilizzare semplicemente una delle sottoclassi LayoutManager predefinite:

  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager

In questo tutorial, ho intenzione di utilizzare LinearLayoutManager. Di default, questa sottoclasse LayoutManager renderà RecyclerView simile a ListView.

Fase 3: definire i dati

Proprio come un ListView, un RecyclerView ha bisogno di un adapter per accedere ai dati. Ma prima di creare un adapter, vediamo di creare i dati con cui lavorare. Creiamo una semplice classe per rappresentare una persona e quindi scriviamo un metodo per inizializzare una list di oggetti persona:

Passo 4: creare un'adapter

Per creare un'adapter utilizzabile da RecyclerView, è necessario estendere RecyclerView.Adapter. Questo adapter segue il pattern di progettazione view holder, il che significa poter definire una classe personalizzata che estende RecyclerView.ViewHolder. Questo pattern riduce al minimo il numero di chiamate al dispendioso metodo findViewById.

All'inizio di questo tutorial, abbiamo già definito il layout XML per una CardView che rappresenta una persona. Ora andremo a riutilizzare quel layout. All'interno del costruttore del nostro ViewHolder personalizzato, inizializziamo le visualizzazioni che appartengono agli elementi della nostra RecyclerView.

Successivamente, aggiungiamo un costruttore all'adapter personalizzato, in modo da renderlo un puntatore per i dati visualizzati da RecyclerView. Siccome i nostri dati sono in forma di list di oggetti di persone, utilizzare il codice seguente:

RecyclerView.Adapter ha tre metodi astratti da sovrascrivere. Cominciamo con il metodo getItemCount. Questo dovrebbe restituire il numero di elementi presenti nei dati. Siccome i nostri dati sono in forma di list, abbiamo bisogno solo di chiamare il metodo size sull'oggetto list:

Successivamente, sovrascriviamo il metodo onCreateViewHolder. Come suggerisce il nome, questo metodo viene chiamato quando il ViewHolder personalizzato ha bisogno di essere inizializzato. Specifichiamo il layout che ogni elemento del RecyclerView dovrà utilizzare. Questo viene fatto "gonfiando" il layout con LayoutInflater, passando l'output al costruttore del ViewHolder personalizzato.

Sovrascrivere onBindViewHolder per specificare il contenuto di ciascun elemento della RecyclerView. Questo metodo è molto simile al metodo getView di un adapter ListView. Nel nostro esempio, qui è dove è necessario impostare i valori per i campi nome, età e foto della CardView.

Infine, è necessario sovrascrivere il metodo onAttachedToRecyclerView. Per ora, possiamo semplicemente utilizzare l'implementazione della superclasse di questo metodo, come illustrato qui di seguito.

Passo 5: utilizzare l'adapter

Ora che l'adapter è pronto, aggiungere il seguente codice alla Activity per inizializzare e utilizzare l'adapter chiamando il costruttore e il metodo setAdapter di RecyclerView:

Pass 6: Compila ed esegui

Quando si esegue l'esempio RecyclerView su un dispositivo Android, si dovrebbe avere il seguente risultato.

Conclusione

In questo tutorial, hai imparato come utilizzare i widget CardView e RecyclerView introdotte in Android Lollipop. Hai visto anche esempi su come usare questi widget nelle app in Material Design. Nota che se anche RecyclerView può fare quasi tutto quello che può fare ListView, per piccoli set di dati, è preferibile utilizzare ListView, in quanto richiede meno righe di codice.

È possibile consultare i riferimenti su Android Developers per ulteriori informazioni sulle classi CardView e RecyclerView.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.