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:
NullPointerExceptionenfindViewById. Verifica que els IDs de les vistes coincideixin amb els definits en els fitxers XML. - Consell: Utilitza
DiffUtilper 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
