Se construye un RecyclerView a partir de la información de una lista de cadenas.
En la pantalla se pone la View del recyclerview y también se tiene que crear la activity que se va a repetir en la lista
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clientes"
android:textSize="30dp"
android:layout_gravity="center"/>
<androidx.appcompat.widget.SearchView
android:id="@+id/svBuscador"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:iconifiedByDefault="false"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvClientes"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
activity_item_client.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:text="Prueba"
android:textColor="@color/white"
android:background="@color/black"/>
</LinearLayout>
Se crea el adaptador que será el encargado de mandar a la view todos los elementos de activity_item_client
ClientAdapter.kt
package com.javi.u10c
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class ClientAdapter: RecyclerView.Adapter<ClientAdapter.ViewHolder>() {
private var clientList: List<String> = emptyList() //Lista de información a visualizar
fun setData(clients: List<String>){ //Función que se llama desde MainActivity donde se manda los datos
clientList=clients
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ClientAdapter.ViewHolder {
val view= LayoutInflater.from(parent.context).inflate(R.layout.activity_item_cliente,parent,false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return clientList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var client = clientList[position]
holder.bind(client) //por cada elemento, llama a la función que lo construye
}
class ViewHolder(view: View): RecyclerView.ViewHolder(view) {
val tvNombre=view.findViewById<TextView>(R.id.tvNombre)
fun bind(client: String){ //construye cada elemento
tvNombre.text=client
}
}
}
En el MainActivity.kt se crea el adaptador, se dice el aspecto de ese adaptador y se asocia al RecyclerView.
Por último, se mandan los datos que se tiene que visualizar
package com.javi.u10c
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var rvClientes = findViewById<RecyclerView>(R.id.rvClientes)
var adapter = ClientAdapter()
rvClientes.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
rvClientes.adapter = adapter
var listaClientes: List<String> = listOf("Uno", "Dos", "Tres", "Cuatro")
adapter.setData(listaClientes)
}