Android Academy · Lezione

Nozioni di base su RecyclerView

Visualizzare grandi elenchi in modo efficiente con RecyclerView. Creare un Adapter e un ViewHolder e collegare i dati usando ViewBinding.

Lezione 2 di 611 passaggi

Nozioni di base su RecyclerView è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 2 di 6. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 6 lezioni in totale.

Perché RecyclerView?

RecyclerView è il metodo standard per visualizzare in Android un elenco scorrevole di elementi.

A differenza del precedente ListView, RecyclerView:

  • Ricicla le viste durante lo scorrimento: ne crea solo il numero necessario per riempire lo schermo
  • Funziona con elenchi verticali, elenchi orizzontali e griglie
  • È altamente personalizzabile con i LayoutManager

Architettura di RecyclerView

Per funzionare, RecyclerView richiede tre componenti:

  • RecyclerView — il widget nel layout XML
  • Adapter — collega i dati alle viste degli elementi
  • ViewHolder — conserva i riferimenti alle viste all'interno di ogni elemento della lista

L'Adapter crea i ViewHolder e vi associa i dati mentre l'utente scorre la lista.

Aggiungere RecyclerView all'XML

Aggiunga il widget al layout e dichiari la dipendenza in build.gradle:

<!-- In res/layout/activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- app/build.gradle dependencies: -->
<!-- implementation 'androidx.recyclerview:recyclerview:1.3.2' -->

Layout dell'elemento

Crei un file XML separato per ogni elemento della lista. Ad esempio, res/layout/item_fruit.xml:

<!-- res/layout/item_fruit.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvCalories"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

</LinearLayout>

Il modello dei dati

Definisca la classe dati che rappresenta ogni elemento della lista:

data class Fruit(
    val name: String,
    val calories: Int
)

Creazione dell'Adapter

L'Adapter collega i dati al layout dell'elemento. Dispone di tre metodi principali:

  • onCreateViewHolder — esegue l'inflazione dell'XML dell'elemento
  • onBindViewHolder — inserisce i dati di un elemento
  • getItemCount — restituisce il numero totale di elementi

Implementazione dell'Adapter

Un Adapter RecyclerView completo e minimale:

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class FruitAdapter(
    private val fruits: List<Fruit>
) : RecyclerView.Adapter<FruitAdapter.ViewHolder>() {

    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val tvName: TextView = view.findViewById(R.id.tvName)
        val tvCalories: TextView = view.findViewById(R.id.tvCalories)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_fruit, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val fruit = fruits[position]
        holder.tvName.text = fruit.name
        holder.tvCalories.text = "${fruit.calories} kcal"
    }

    override fun getItemCount() = fruits.size
}

Configurazione nell'Activity

Colleghi RecyclerView, Adapter e LayoutManager nella propria Activity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    val fruits = listOf(
        Fruit("Apple", 95),
        Fruit("Banana", 105),
        Fruit("Cherry", 50),
        Fruit("Mango", 202)
    )

    val adapter = FruitAdapter(fruits)

    binding.recyclerView.apply {
        this.adapter = adapter
        layoutManager = LinearLayoutManager(this@MainActivity)
    }
}

GridLayoutManager

Modifichi il LayoutManager per visualizzare una griglia invece di un elenco a colonna singola:

  • LinearLayoutManager — elenco verticale o orizzontale
  • GridLayoutManager(context, spanCount) — griglia con N colonne
  • StaggeredGridLayoutManager — griglia sfalsata in stile Pinterest

Verifica rapida

Qual è il compito di ViewHolder in un Adapter RecyclerView?

Riepilogo: nozioni di base su RecyclerView

Ora può visualizzare le liste in modo efficiente:

  • RecyclerView ricicla le viste per migliorare le prestazioni
  • Tre componenti: widget RecyclerView, Adapter e ViewHolder
  • L'XML dell'elemento definisce l'aspetto di una riga o di una scheda
  • L'Adapter collega i dati alle viste in onBindViewHolder
  • LayoutManager controlla il layout a elenco, a griglia o sfalsato

Prossimo argomento: rendere gli elementi della lista selezionabili con gli eventi di clic.

Gratis per iniziare

Impara Kotlin con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
36
Lezioni
152

Domande Frequenti

La lezione «Nozioni di base su RecyclerView» è gratuita?

Sì — il testo completo di «Nozioni di base su RecyclerView» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 6 lezioni in totale.

Cosa imparerò in «Nozioni di base su RecyclerView»?

Visualizzare grandi elenchi in modo efficiente con RecyclerView. Creare un Adapter e un ViewHolder e collegare i dati usando ViewBinding. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Android Academy?

Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 6.

Quanto tempo richiede la lezione «Nozioni di base su RecyclerView»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Android Academy?

Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Collection di Kotlin
  2. Nozioni di base su RecyclerView
  3. Eventi di clic di RecyclerView
  4. SharedPreferences
  5. DataStore Preferences
  6. Adapter e DiffUtil
← Torna a Android Academy