Introducció
RecyclerView és un dels components més potents i flexibles per mostrar llistes de dades en Android. És una versió millorada de ListView i GridView, oferint més control sobre la disposició dels elements i una millor gestió del rendiment.
Objectius
En aquesta secció, aprendràs a:
- Comprendre la funcionalitat bàsica de RecyclerView.
- Configurar un RecyclerView en un projecte Android.
- Crear un Adapter per gestionar les dades.
- Utilitzar un LayoutManager per definir la disposició dels elements.
- Implementar un ViewHolder per optimitzar el rendiment.
Components Clau de RecyclerView
- RecyclerView: El contenidor principal que gestiona la visualització dels elements.
- Adapter: Gestiona les dades i crea les vistes per a cada element.
- ViewHolder: Conté les vistes per a cada element i les reutilitza per millorar el rendiment.
- LayoutManager: Defineix com es disposen els elements (lineal, en quadrícula, etc.).
Configuració de RecyclerView
Pas 1: Afegir RecyclerView al Layout
Primer, afegeix un RecyclerView al teu fitxer de disseny XML.
<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/>
Pas 2: Crear el Layout per als Elements
Crea un fitxer XML per definir el disseny de cada element de la llista. Per exemple, item_layout.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Element de la llista"/> </LinearLayout>
Pas 3: Crear el ViewHolder
El ViewHolder conté les vistes per a cada element i les reutilitza per millorar el rendiment.
public class MyViewHolder extends RecyclerView.ViewHolder { public TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } }
Pas 4: Crear l'Adapter
L'Adapter gestiona les dades i crea les vistes per a cada element.
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { private List<String> dataList; public MyAdapter(List<String> dataList) { this.dataList = dataList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { String data = dataList.get(position); holder.textView.setText(data); } @Override public int getItemCount() { return dataList.size(); } }
Pas 5: Configurar el RecyclerView en l'Activitat
Finalment, configura el RecyclerView en la teva activitat.
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private MyAdapter adapter; private List<String> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); dataList = new ArrayList<>(); for (int i = 1; i <= 20; i++) { dataList.add("Element " + i); } adapter = new MyAdapter(dataList); recyclerView.setAdapter(adapter); } }
Exercici Pràctic
Objectiu
Crea una aplicació que mostri una llista de noms utilitzant RecyclerView.
Passos
- Crea un nou projecte Android.
- Afegeix un RecyclerView al layout principal.
- Crea un layout per als elements de la llista.
- Implementa el ViewHolder, l'Adapter i configura el RecyclerView a l'activitat principal.
Solució
// MainActivity.java public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private MyAdapter adapter; private List<String> nameList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); nameList = Arrays.asList("Anna", "Bernat", "Carla", "David", "Eva"); adapter = new MyAdapter(nameList); recyclerView.setAdapter(adapter); } } // MyAdapter.java public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { private List<String> nameList; public MyAdapter(List<String> nameList) { this.nameList = nameList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { String name = nameList.get(position); holder.textView.setText(name); } @Override public int getItemCount() { return nameList.size(); } } // MyViewHolder.java public class MyViewHolder extends RecyclerView.ViewHolder { public TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } }
Errors Comuns i Consells
- Error: RecyclerView no mostra dades. Assegura't que l'Adapter estigui configurat correctament i que la llista de dades no estigui buida.
- Error:
NullPointerException
enfindViewById
. Verifica que els IDs de les vistes coincideixin amb els definits en els fitxers XML. - Consell: Utilitza
DiffUtil
per actualitzar eficientment les dades en RecyclerView.
Conclusió
RecyclerView és una eina poderosa per mostrar llistes de dades en Android. Amb una comprensió clara dels components clau i una configuració adequada, pots crear llistes eficients i personalitzades per a les teves aplicacions. Practica amb diferents tipus de LayoutManagers i Adapters per dominar completament aquesta eina.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment