Se stai cercando di capire come usare RecyclerView Android per creare liste e griglie scorrevoli davvero performanti, questa guida pratica fa per te. Vedrai passo passo cos’è RecyclerView, a cosa serve e come integrarlo in un progetto reale sfruttando Java e Android Studio, senza dare nulla per scontato. L’articolo ti accompagna nella creazione di un esempio completo con Adapter personalizzato, ViewHolder e LayoutManager, così da avere subito una base solida da riutilizzare. Prenditi qualche minuto e segui i passaggi: alla fine saprai impostare in autonomia un RecyclerView pulito, leggibile e facile da mantenere.

RecyclerView in Android è un componente avanzato per mostrare liste e griglie scorrevoli in modo efficiente, ideale quando gestisci molti elementi o interfacce dinamiche. In questo tutorial su RecyclerView Android vedrai come usare Adapter, ViewHolder e LayoutManager con Java all’interno di Android Studio, così da strutturare il codice in modo pulito e riutilizzabile. La guida è pensata per sviluppatori Android che programmano in Java e vogliono migliorare le proprie liste: continua a leggere e segui passo passo la guida.

RecyclerView Android: Guida Completa con Adapter, ViewHolder e LayoutManager in Java

RecyclerView è il componente consigliato per mostrare liste e griglie scorrevoli in Android. Rispetto alla vecchia ListView è più flessibile, veloce e personalizzabile. Riutilizza le viste che escono dallo schermo (recycling), semplifica la gestione di layout complessi e si integra facilmente con animazioni e decorazioni. In questa guida creerai un’app che mostra una lista di colori con nome e codice esadecimale usando RecyclerView, un Adapter personalizzato, un ViewHolder e un LayoutManager lineare.

RecyclerView Android: schema con Adapter, ViewHolder e LayoutManager
Architettura di RecyclerView Android

Nel 2025 RecyclerView è lo standard de facto per gestire liste e griglie in Android: è costantemente aggiornata dalla libreria AndroidX, supporta al meglio le nuove API, lavora in modo efficiente anche con migliaia di elementi e si integra senza problemi con ViewBinding, LiveData, Flow e gli altri componenti dell’architettura moderna. Se stai creando una nuova app o stai facendo un refactoring di codice esistente, partire da RecyclerView significa avere una base solida, performante e pronta per crescere nel tempo.

Quando usare RecyclerView rispetto a ListView? In pratica, sempre che ti sia possibile. ListView è rimasta per compatibilità con progetti molto vecchi, ma non viene più evoluta ed è limitata: gestisce solo liste verticali semplici, ha meno controlli sulle animazioni e richiede più codice “di contorno” per scenari complessi. RecyclerView invece ti permette di passare da una lista verticale a una griglia, supporta decorazioni, animazioni personalizzate, aggiornamenti parziali degli elementi e lavora bene in combinazione con DiffUtil per aggiornare solo le righe che cambiano.

In breve: se nel 2025 stai ancora valutando se usare ListView o RecyclerView, la risposta è che RecyclerView è la scelta consigliata per quasi tutti i casi reali. Puoi considerare ListView solo se devi mantenere vecchie schermate già funzionanti e non hai tempo di migrare. In tutti gli altri scenari (nuove feature, nuove app, codice da modernizzare) parti direttamente da RecyclerView.

Cos’è RecyclerView in Android

RecyclerView è un widget della libreria AndroidX pensato per mostrare grandi quantità di dati in modo efficiente. L’idea di base è il riciclo delle viste: invece di creare una nuova vista per ogni elemento, RecyclerView riusa le viste che escono dallo schermo e aggiorna solo i contenuti.

I componenti principali di RecyclerView sono:

  • RecyclerView: il contenitore visivo che mostra la lista o la griglia di elementi.
  • Adapter (es. RecyclerViewAdapter): collega i dati (lista di oggetti) alle viste. Si occupa di creare i ViewHolder e di associare i dati ad ogni riga con onBindViewHolder().
  • ViewHolder (classe interna dell’adapter): contiene i riferimenti alle viste di ogni elemento della lista (es. TextView, ImageView) per evitare chiamate ripetute a findViewById().
  • LayoutManager (es. LinearLayoutManager): definisce come disporre gli elementi sullo schermo (lista verticale, lista orizzontale, griglia, layout personalizzati).

Nel nostro esempio userai:

  • un LinearLayoutManager verticale per mostrare una lista semplice;
  • un Adapter personalizzato che riceve una lista di oggetti Pojo (nome e codice colore);
  • un layout XML per l’attività principale e uno per il singolo elemento della lista.

Struttura del progetto RecyclerView Android

Nel progetto di esempio usiamo il package com.example.recyclerView e questi file principali:

  • activity_main.xml – layout dell’attività principale con il widget RecyclerView.
  • recycler_list.xml – layout di ogni singolo elemento della lista (card con due TextView).
  • Pojo.java – classe modello per rappresentare un colore (nome e codice).
  • RecyclerViewAdapter.java – adapter personalizzato che collega i dati al RecyclerView.
  • MainActivity.java – attività principale che inizializza dati, RecyclerView, LayoutManager e Adapter.

activity_main.xml

Questo file definisce il layout principale dell’app. Il contenitore radice è un ConstraintLayout che ospita un RecyclerView a schermo intero.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

recycler_list.xml

Questo file definisce l’aspetto di ogni elemento mostrato nel RecyclerView. Ogni riga è una MaterialCardView che contiene un LinearLayout verticale con due TextView: una per il nome del colore e una per il codice esadecimale.

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    app:cardUseCompatPadding="true"
    app:cardCornerRadius="8dp"
    app:cardElevation="4dp"
    android:clickable="true"
    android:foreground="?android:attr/selectableItemBackground">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="16dp">

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

        <TextView
            android:id="@+id/code"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:layout_marginTop="4dp" />

    </LinearLayout>

</com.google.android.material.card.MaterialCardView>

Pojo.java

Pojo è la classe modello che rappresenta un elemento della lista. Contiene il nome del colore e il relativo codice esadecimale, più un costruttore e due metodi getter per leggere questi valori.

package com.example.recyclerView;

public class Pojo {

    private final String colorName;
    private final String colorCode;

    public Pojo(String colorName, String colorCode) {
        this.colorName = colorName;
        this.colorCode = colorCode;
    }

    public String getColor() {
        return colorName;
    }

    public String getCode() {
        return colorCode;
    }
}

RecyclerViewAdapter.java

RecyclerViewAdapter collega la lista di oggetti Pojo al RecyclerView e implementa tre metodi principali:

  • onCreateViewHolder(): viene chiamato quando serve creare una nuova vista. Qui gonfiamo (inflate) il layout recycler_list.xml e creiamo un nuovo ViewHolder.
  • onBindViewHolder(): associa i dati dell’elemento alla posizione indicata alle viste contenute nel ViewHolder.
  • getItemCount(): restituisce il numero totale di elementi nella lista.

La classe interna MyHolder estende RecyclerView.ViewHolder e memorizza i riferimenti alle due TextView presenti in ogni riga.

package com.example.recyclerView;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyHolder> {

    private final Context context;
    private final List<Pojo> items;

    public RecyclerViewAdapter(Context context, List<Pojo> items) {
        this.context = context;
        this.items = items;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.recycler_list, parent, false);
        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
        Pojo item = items.get(position);
        holder.colorName.setText(item.getColor());
        holder.colorCode.setText(item.getCode());
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    static class MyHolder extends RecyclerView.ViewHolder {

        final TextView colorName;
        final TextView colorCode;

        MyHolder(@NonNull View itemView) {
            super(itemView);
            colorName = itemView.findViewById(R.id.name);
            colorCode = itemView.findViewById(R.id.code);
        }
    }
}

MainActivity.java

MainActivity inizializza la lista di colori, configura il RecyclerView con un LinearLayoutManager verticale e imposta l’adapter. Il metodo listColor() riempie una ArrayList<Pojo> con alcuni colori di esempio.

package com.example.recyclerView;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerViewAdapter recyclerViewAdapter;
    private final List<Pojo> colorList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);

        // LayoutManager lineare verticale
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);

        // Dati di esempio
        listColor();

        // Adapter
        recyclerViewAdapter = new RecyclerViewAdapter(this, colorList);
        recyclerView.setAdapter(recyclerViewAdapter);
    }

    private void listColor() {
        colorList.clear();
        colorList.add(new Pojo("Red", "#FF0000"));
        colorList.add(new Pojo("Yellow", "#FFFF00"));
        colorList.add(new Pojo("Blue", "#0000FF"));
        colorList.add(new Pojo("Green", "#008000"));
        colorList.add(new Pojo("Orange", "#FFA500"));
        colorList.add(new Pojo("Purple", "#EE82EE"));
    }
}

Come aggiungere click listener in RecyclerView Android

Uno degli scenari più comuni con RecyclerView è la gestione del click su un elemento della lista, ad esempio per aprire un dettaglio o mostrare un messaggio. Il modo più pulito è definire un’interfaccia di callback nell’adapter e notificare l’attività (o il fragment) quando l’utente tocca un elemento.

Ecco un esempio completo di adapter con click listener e relativo utilizzo in MainActivity.

package com.example.recyclerView;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

// Adapter con gestione del click sugli elementi
public class ClickableRecyclerViewAdapter extends RecyclerView.Adapter<ClickableRecyclerViewAdapter.MyHolder> {

    public interface OnItemClickListener {
        void onItemClick(Pojo item, int position);
    }

    private final Context context;
    private final List<Pojo> items;
    private OnItemClickListener listener;

    public ClickableRecyclerViewAdapter(Context context, List<Pojo> items) {
        this.context = context;
        this.items = items;
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.recycler_list, parent, false);
        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
        Pojo item = items.get(position);
        holder.colorName.setText(item.getColor());
        holder.colorCode.setText(item.getCode());

        holder.itemView.setOnClickListener(v -> {
            if (listener != null) {
                listener.onItemClick(item, holder.getAdapterPosition());
            }
        });
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    static class MyHolder extends RecyclerView.ViewHolder {

        final TextView colorName;
        final TextView colorCode;

        MyHolder(@NonNull View itemView) {
            super(itemView);
            colorName = itemView.findViewById(R.id.name);
            colorCode = itemView.findViewById(R.id.code);
        }
    }
}

// Esempio di utilizzo in MainActivity
class MainActivityWithClick extends AppCompatActivity {

    private RecyclerView recyclerView;
    private ClickableRecyclerViewAdapter adapter;
    private final List<Pojo> colorList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        listColor();

        adapter = new ClickableRecyclerViewAdapter(this, colorList);
        recyclerView.setAdapter(adapter);

        adapter.setOnItemClickListener((item, position) -> {
            String message = "Hai cliccato " + item.getColor() + " (" + item.getCode() + ")";
            Toast.makeText(MainActivityWithClick.this, message, Toast.LENGTH_SHORT).show();
        });
    }

    private void listColor() {
        colorList.clear();
        colorList.add(new Pojo("Red", "#FF0000"));
        colorList.add(new Pojo("Yellow", "#FFFF00"));
        colorList.add(new Pojo("Blue", "#0000FF"));
        colorList.add(new Pojo("Green", "#008000"));
        colorList.add(new Pojo("Orange", "#FFA500"));
        colorList.add(new Pojo("Purple", "#EE82EE"));
    }
}

RecyclerView Android con GridLayoutManager: griglia a 2 e 3 colonne

Oltre alla classica lista verticale, con RecyclerView puoi creare facilmente una griglia di elementi. Per farlo usi GridLayoutManager, indicando il numero di colonne desiderato. Il resto della logica dell’adapter rimane invariato, quindi puoi passare dalla lista alla griglia senza riscrivere il codice di binding.

package com.example.recyclerView;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class GridActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerViewAdapter recyclerViewAdapter;
    private final List<Pojo> colorList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);

        // Griglia a 2 colonne in verticale
        GridLayoutManager gridLayoutManager2 = new GridLayoutManager(this, 2);
        recyclerView.setLayoutManager(gridLayoutManager2);

        // Se vuoi una griglia a 3 colonne, puoi usare:
        // GridLayoutManager gridLayoutManager3 = new GridLayoutManager(this, 3);
        // recyclerView.setLayoutManager(gridLayoutManager3);

        listColor();

        recyclerViewAdapter = new RecyclerViewAdapter(this, colorList);
        recyclerView.setAdapter(recyclerViewAdapter);
    }

    private void listColor() {
        colorList.clear();
        colorList.add(new Pojo("Red", "#FF0000"));
        colorList.add(new Pojo("Yellow", "#FFFF00"));
        colorList.add(new Pojo("Blue", "#0000FF"));
        colorList.add(new Pojo("Green", "#008000"));
        colorList.add(new Pojo("Orange", "#FFA500"));
        colorList.add(new Pojo("Purple", "#EE82EE"));
    }
}

Puoi usare GridLayoutManager anche in orizzontale passando RecyclerView.HORIZONTAL come orientamento o personalizzando come vengono distribuiti gli elementi con setSpanSizeLookup() per creare griglie più complesse (ad esempio card che occupano due colonne).

Come aggiornare i dati in RecyclerView con notifyDataSetChanged e DiffUtil

In un’app reale i dati mostrati da RecyclerView cambiano spesso: elementi che si aggiungono, si rimuovono o vengono aggiornati. Il modo più semplice per ridisegnare la lista è chiamare notifyDataSetChanged() sull’adapter, ma per liste grandi e aggiornamenti frequenti è molto più efficiente usare DiffUtil per calcolare solo le differenze reali.

Ecco un esempio di adapter che espone un metodo updateData() semplice basato su notifyDataSetChanged():

public class SimpleRecyclerViewAdapter extends RecyclerView.Adapter<SimpleRecyclerViewAdapter.MyHolder> {

    private final Context context;
    private final List<Pojo> items;

    public SimpleRecyclerViewAdapter(Context context, List<Pojo> items) {
        this.context = context;
        this.items = items;
    }

    public void updateData(List<Pojo> newItems) {
        items.clear();
        items.addAll(newItems);
        notifyDataSetChanged();
    }

    // onCreateViewHolder, onBindViewHolder, getItemCount come nell'esempio base
}

Per una gestione più efficiente, soprattutto con liste grandi, puoi usare DiffUtil. Definisci una classe che estende DiffUtil.Callback e calcola le differenze tra la vecchia lista e la nuova, quindi applica solo gli aggiornamenti necessari.

public class PojoDiffCallback extends DiffUtil.Callback {

    private final List<Pojo> oldList;
    private final List<Pojo> newList;

    public PojoDiffCallback(List<Pojo> oldList, List<Pojo> newList) {
        this.oldList = oldList;
        this.newList = newList;
    }

    @Override
    public int getOldListSize() {
        return oldList.size();
    }

    @Override
    public int getNewListSize() {
        return newList.size();
    }

    @Override
    public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
        // Puoi usare un id univoco; qui usiamo nome + codice per semplicità
        Pojo oldItem = oldList.get(oldItemPosition);
        Pojo newItem = newList.get(newItemPosition);
        return oldItem.getColor().equals(newItem.getColor()) &&
               oldItem.getCode().equals(newItem.getCode());
    }

    @Override
    public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
        Pojo oldItem = oldList.get(oldItemPosition);
        Pojo newItem = newList.get(newItemPosition);
        return oldItem.getColor().equals(newItem.getColor()) &&
               oldItem.getCode().equals(newItem.getCode());
    }
}

public class DiffUtilRecyclerViewAdapter extends RecyclerView.Adapter<DiffUtilRecyclerViewAdapter.MyHolder> {

    private final Context context;
    private final List<Pojo> items = new ArrayList<>();

    public DiffUtilRecyclerViewAdapter(Context context) {
        this.context = context;
    }

    public void submitList(List<Pojo> newItems) {
        PojoDiffCallback diffCallback = new PojoDiffCallback(items, newItems);
        DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);

        items.clear();
        items.addAll(newItems);

        diffResult.dispatchUpdatesTo(this);
    }

    // onCreateViewHolder, onBindViewHolder, getItemCount come negli esempi precedenti
}

Con DiffUtil RecyclerView aggiorna solo gli elementi realmente cambiati, evitando di ridisegnare l’intera lista. Questo approccio è ideale quando i dati arrivano da API remote, database locali o flussi reattivi che emettono aggiornamenti frequenti.

Metodi principali di RecyclerView

Di seguito trovi una panoramica sintetica di alcuni metodi fondamentali usati con RecyclerView e con il suo adapter.

MetodoDove si usaDescrizione
setLayoutManager()RecyclerViewImposta il LayoutManager responsabile della disposizione degli elementi (lineare, griglia, personalizzato).
setAdapter()RecyclerViewAssocia l’adapter che fornisce le viste e i dati da mostrare nella lista.
notifyDataSetChanged()AdapterNotifica a RecyclerView che i dati sono cambiati e che l’intera lista deve essere ridisegnata.
smoothScrollToPosition()RecyclerViewEffettua uno scorrimento animato fino all’elemento nella posizione indicata.
getItemCount()AdapterRestituisce il numero totale di elementi gestiti dall’adapter.

Dipendenza Gradle

Dipendenza Gradle per RecyclerView Android

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.3.2"
}

Conclusione: RecyclerView Android in pratica

In questa guida hai visto come creare una semplice lista di colori con RecyclerView in Android, dalla struttura del progetto alla configurazione di Adapter, ViewHolder e LayoutManager. Da qui puoi estendere l’esempio aggiungendo il click sugli elementi, nuovi campi nei tuoi Pojo, layout diversi (griglie, liste orizzontali) e animazioni personalizzate, sfruttando la flessibilità e le buone prestazioni offerte da RecyclerView.

Domande Frequenti su RecyclerView Android

Qual è la differenza tra RecyclerView e ListView in Android?

RecyclerView è l’evoluzione moderna di ListView. Offre un sistema di riciclo delle viste più efficiente, supporta diversi tipi di layout (liste verticali, orizzontali, griglie e layout personalizzati), gestisce più facilmente le animazioni e si integra con strumenti come DiffUtil. ListView è limitata alla lista verticale semplice, richiede più codice per scenari complessi e non è più al centro dello sviluppo di Android. Per nuove app o refactoring nel 2025, la scelta consigliata è quasi sempre RecyclerView.

Come si aggiorna la lista in RecyclerView?

Per aggiornare i dati puoi modificare la lista usata dall’adapter e poi chiamare notifyDataSetChanged() per ridisegnare l’intera lista. Per liste più grandi e aggiornamenti frequenti è consigliato usare DiffUtil (o ListAdapter) per calcolare le differenze tra la vecchia lista e la nuova e notificare solo gli elementi che sono davvero cambiati. Questo migliora le prestazioni e rende più fluide le animazioni.

RecyclerView funziona con Java o solo con Kotlin?

RecyclerView funziona perfettamente sia con Java che con Kotlin. La libreria AndroidX è scritta per essere usata da entrambi i linguaggi e gli esempi di questa guida mostrano proprio l’utilizzo in Java. Se stai migrando un progetto esistente in Java, puoi introdurre RecyclerView senza dover riscrivere l’app in Kotlin.

Come si gestisce il click su un elemento di RecyclerView?

Il pattern più comune è definire un’interfaccia di callback nell’adapter (ad esempio OnItemClickListener), esporre un metodo setOnItemClickListener() e impostare il listener sull’itemView all’interno di onBindViewHolder(). Quando l’utente clicca un elemento, l’adapter chiama il metodo dell’interfaccia passando l’oggetto cliccato e la posizione, e l’attività o il fragment decide cosa fare (aprire un dettaglio, mostrare un Toast, navigare a un’altra schermata, ecc.).

Cos’è il ViewHolder pattern in RecyclerView?

Il ViewHolder pattern è una tecnica per evitare chiamate ripetute a findViewById(). In RecyclerView viene applicato tramite la classe interna che estende RecyclerView.ViewHolder: nel costruttore recuperi una volta sola i riferimenti alle viste (ad esempio le TextView) e li memorizzi come campi. In questo modo, quando onBindViewHolder() viene chiamato più volte, puoi aggiornare direttamente le viste senza cercarle di nuovo, migliorando le prestazioni e riducendo l’uso della CPU.


Guide correlate

Se stai lavorando ai layout puoi approfondire la guida su ConstraintLayout in Android per gestire vincoli e allineamenti complessi.

Per l’area superiore dell’app ti possono essere utili le indicazioni su come configurare una Toolbar in Android moderna e personalizzabile.

Se devi gestire il menu laterale, leggi la guida dedicata a NavigationDrawer in Android con esempi pratici.

Per creare animazioni tra viste e scene prova i tutorial su MotionLayout in Android integrato con ConstraintLayout.

Quando vuoi aggiungere il gesto di pull to refresh, puoi seguire la guida a SwipeRefreshLayout in Android con esempi in Java.

Per liste più semplici o compatibili con vecchi componenti trovi utile la guida a BaseAdapter in Android con esempi completi.

Se devi mostrare caricamenti e stati di attesa, approfondisci l’uso di ProgressBar in Android in diverse varianti.

Per una panoramica organizzata di tutte le lezioni puoi partire dalla pagina hub Guide Android in Java, dove trovi raccolte tutte le guide principali.