Ejemplo de RecyclerView en Android: guía detallada | Por Reyhaneh Ezatpanah | Marzo de 2022
RecyclerViews en Android es uno de los conceptos más fascinantes de Android. Hay muchos ejemplos e implementaciones en Internet. Antes de implementar RecyclerView, primero debe comprender qué es.
¿Qué es exactamente RecyclerView?
RecyclerView es una vista de propósito general que proporciona una vista condensada de grandes conjuntos de datos. Es esencialmente un contenedor ViewGroup, llamado ViewHolders, que llena elementos específicos. RecyclerView es una gran clase de Android que proporciona una interfaz de usuario flexible. Una ventaja significativa de usar RecyclerViews es que puede reutilizar de manera efectiva las vistas en lugar de administrar elementos que ni siquiera son visibles para el usuario.
¿Cuál es el propósito de RecyclerView?
En el pasado, para mostrar listas, Android usaba las clases ListView o GridView. RecyclerView se puede describir como una combinación de ListView y GridView. Sin embargo, en RecyclerView, ciertas características separan su código en componentes mantenibles, al mismo tiempo que imponen patrones de diseño eficientes en memoria.
Diseño en RecyclerView
RecyclerView cambia todo lo que se usa en ListView y GridView. RecyclerView todavía usa un adaptador como fuente de datos. Sin embargo, debe crear ViewHolders para mantener la referencia en la memoria.
Para proporcionar una nueva vista, RecyclerView crea un nuevo objeto ViewHolder para inflar el diseño y guarda esas referencias, o recicla uno de la pila existente.
¡Por eso se llama RecyclerView!
RecyclerView necesita un ViewHolder; RecyclerView sabe qué animación aplicar a qué elemento y lo agrega según sea necesario. También puedes hacer tus propias animaciones y usarlas en cualquier momento.
LayoutManager es el componente más importante e interesante de RecyclerView. Este objeto localiza elementos en RecyclerView y les notifica cuándo reciclar elementos que se han transferido fuera de la pantalla. Esto fue hecho previamente por el mismo ListView.
RecyclerView ha separado esta funcionalidad para permitir varios diseños, incluidos vertical, horizontal, en cuadrícula, escalonado y el suyo propio.
De forma predeterminada, hay tres tipos de administradores de diseño:
- Administrador de diseño lineal: Coloque los elementos para que parezcan un ListView estándar.
- Administrador de diseño de cuadrícula: PColoque elementos en un formato de cuadrícula similar a GridView.
- Administrador de diseño de cuadrícula escalonada: Localice los términos en un formato de cuadrícula escalonada.
La implementación de RecyclerView requiere:
- lista de objeto de datos trabajar con.
- Una archivo XML ver ítem.
- Una adaptador Enlace esos datos a la vista.
- Una especie de Ver titular Rellene las vistas de la interfaz de usuario a partir de archivos de proyecto XML.
Ahora que entendemos qué es un RecyclerView y cómo funciona, comencemos a crear un RecyclerView de ejemplo simple 🙂
Paso 1: preparar la interfaz de usuario para cada fila
Cree un archivo de diseño personalizado para RecyclerView como item_row.xml en el diseño de recursos.
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:background="#B3E5FC"
android:layout_margin="5dp"
android:padding="5dp">android:id="@+id/tvId"
android:text="Id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />android:id="@+id/tvName"
android:text="Name"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvId" />
Paso 2: agregue RecyclerView a la actividad o al diseño de fragmentos
Agregar RecyclerView en el diseño de actividad actividad_principal.xml Diseñe el archivo y agregue el siguiente código.
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">android:id="@+id/rvMain"
android:layout_height="match_parent"
android:layout_width="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
Paso 3 – Crear una clase de recurso de datos
modelo de muestra.kt
data class SampleModel(
val id:Int ,
val name: String
)
Paso 4: crea una clase de adaptador
Cree titulares de vista para elementos de vista, conéctese a la fuente de datos de RecyclerView y maneje la lógica de vista creando un adaptador de RecyclerView.
class SampleAdapter (val items : MutableList) private lateinit var binding: ItemRowBinding
: RecyclerView.Adapter(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SampleAdapter.ViewHolder {
val inflater =LayoutInflater.from(parent.context)
binding=ItemRowBinding.inflate(inflater,parent,false)
return ViewHolder(binding)
}override fun onBindViewHolder(holder: SampleAdapter.ViewHolder, position: Int) {
holder.bind(items[position])
}override fun getItemCount() = items.sizeinner class ViewHolder(itemView : ItemRowBinding) : RecyclerView.ViewHolder(itemView.root){
fun bind(item : SampleModel){
binding.apply {
tvId.text=item.id.toString()
tvName.text=item.name
}
}
}
}
Ahora tenemos todo lo que necesitamos.
Conecte el adaptador a RecyclerView. Después de eso, adjunte RecyclerView a la clase de adaptador MainActivity.
class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate var nameList : MutableList= mutableListOf() override fun onCreate(savedInstanceState: Bundle?) {
private lateinit var sampleAdapter: SampleAdapter
super.onCreate(savedInstanceState)
binding= ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
loadData()
sampleAdapter = SampleAdapter(nameList)
binding.apply {
rvMain.apply {
layoutManager=LinearLayoutManager(this@MainActivity)
adapter=sampleAdapter
}
}}fun loadData(){
nameList.add(SampleModel(1,"Sample 1"))
nameList.add(SampleModel(2,"Sample 2"))
nameList.add(SampleModel(3,"Sample 3"))
nameList.add(SampleModel(4,"Sample 4"))
nameList.add(SampleModel(5,"Sample 5"))
nameList.add(SampleModel(6,"Sample 6"))
}
}
Esta administrador de diseño estoy usando aquí Administrador de diseño lineal Para RecyclerView.
La clase de adaptador se inicializa y se le pasa la lista de datos.
Finalmente, la clase de adaptador se adjunta a RecyclerView.
Finalizar:)
fuente de Github:
Además, puede ver mi video sobre cómo crear un Recyclerview en Android en Youtube: