Fundamentos de RecyclerView
Muestre listas grandes de forma eficiente con RecyclerView. Cree un Adapter y un ViewHolder, y conecte los datos mediante ViewBinding.
Fundamentos de RecyclerView es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 2 de 6. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 6 lecciones en total.
¿Por qué RecyclerView?
RecyclerView es la forma estándar de mostrar una lista desplazable de elementos en Android.
A diferencia del antiguo ListView, RecyclerView:
- Recicla las vistas al desplazarse; solo crea las necesarias para llenar la pantalla
- Funciona con listas verticales, listas horizontales y cuadrículas
- Se puede personalizar ampliamente con LayoutManagers
Arquitectura de RecyclerView
RecyclerView necesita tres componentes para funcionar:
- RecyclerView — el widget del XML de su diseño
- Adapter — vincula los datos con las vistas de los elementos
- ViewHolder — conserva referencias a las vistas de cada elemento de la lista
El Adapter crea ViewHolders y vincula los datos a medida que el usuario se desplaza.
Añadir RecyclerView al XML
Añada el widget a su diseño y declare la dependencia en 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' -->Diseño del elemento
Cree un archivo XML independiente para cada elemento de la lista. Por ejemplo, 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>El modelo de datos
Defina la clase de datos que representa cada elemento de su lista:
data class Fruit(
val name: String,
val calories: Int
)Crear el Adapter
El Adapter vincula los datos con el diseño de los elementos. Tiene tres métodos principales:
onCreateViewHolder— infla el XML del elementoonBindViewHolder— completa los datos de un elementogetItemCount— cantidad total de elementos
Implementación del Adapter
Un Adapter de RecyclerView completo y mínimo:
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
}Configurar la Activity
Conecte RecyclerView, Adapter y LayoutManager en su 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
Cambie el LayoutManager para mostrar una cuadrícula en lugar de una lista de una sola columna:
LinearLayoutManager— lista vertical u horizontalGridLayoutManager(context, spanCount)— cuadrícula con N columnasStaggeredGridLayoutManager— cuadrícula escalonada al estilo de Pinterest
Comprobación rápida
¿Cuál es la función de ViewHolder en un Adapter de RecyclerView?
Resumen: conceptos básicos de RecyclerView
Ahora puede mostrar listas de forma eficiente:
- RecyclerView recicla las vistas para mejorar el rendimiento
- Tres componentes: widget RecyclerView, Adapter y ViewHolder
- El XML del elemento define el aspecto de una fila o tarjeta
- El Adapter conecta los datos con las vistas en
onBindViewHolder - LayoutManager controla el diseño de lista, cuadrícula o cuadrícula escalonada
Siguiente: hacer que los elementos de la lista respondan a toques.
Preguntas frecuentes
¿La lección «Fundamentos de RecyclerView» es gratis?
Sí — el texto completo de «Fundamentos de RecyclerView» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 6 lecciones en total.
¿Qué aprenderé en «Fundamentos de RecyclerView»?
Muestre listas grandes de forma eficiente con RecyclerView. Cree un Adapter y un ViewHolder, y conecte los datos mediante ViewBinding. Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Android Academy?
No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 6.
¿Cuánto tiempo toma la lección «Fundamentos de RecyclerView»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Android Academy?
Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Colecciones de Kotlin
- Fundamentos de RecyclerView
- Eventos de clic de RecyclerView
- SharedPreferences
- DataStore Preferences
- Adaptadores y DiffUtil