Implementado RecyclerView con Kotlin y AndroidX


Ejemplo de como implementar un RecyclerView usando Kotlin y la libreria Jetpack components tambien conocida como AndroidX

Definición del objeto RecyclerView

En el layout xml se debe declarar el objeto y sus propiedades

<androidx.recyclerview.widget.RecyclerView 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:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/activity_main" />

Creando Adaptador para el RecyclerView

Se debe crear un Adaptador para la carga de datos

class MySimpleAdapter(private val mDataSet: List<String>?) :
    RecyclerView.Adapter<MySimpleAdapter.MyViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val v = LayoutInflater.from(parent.context)
            .inflate(R.layout.simple_list_item_1, parent, false)
        return MyViewHolder(v)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val data = mDataSet?.get(position)
        data?.let { holder.bindItems(it) }
    }

    override fun getItemCount(): Int {
        return mDataSet?.size ?: 0
    }

    inner class MyViewHolder(v: View) : RecyclerView.ViewHolder(v) {

        private val text1 = v.findViewById(android.R.id.text1) as TextView

        fun bindItems(data: String) {
            text1.text = data
        }

    }

}

El adaptador se le debe pasar el conjunto de datos, funciones y métodos a tener en cuenta

  • OnCreateViewHolder: Es el encargado de cargar la vista de cada elemento
  • onBindViewHolder: Es cuando un elemento es representado en pantalla o sea un candidato
  • getItemCount(): Para obtener el total de elementos del conjunto de datos
  • MyViewHolder: Contenedor reciclaje para los elementos del recyclerview, es donde
  • bindItems: función dentro del MyViewHolder se usa para cargar los datos en los elementos visuales que conforman cada fila del RecyclerView

Definición de los elementos visuales de cada fila simple_list_item_1.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="?attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:textAppearance="?android:attr/textAppearanceListItemSmall" />

Inicialización del RecyclerView

Ahora solo queda inicializar el recyclerView en la actividad o fragmento

private lateint var mAdapter : MySimpleAdapter
...
initRecyclerView()
...
private fun initRecyclerView() {
  mAdapter = MySimpleAdapter(dummyData())
  recycler_view.setHasFixedSize(true)
  recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
  recycler_view.adapter = mAdapter
}

La carga de datos dummyData()

    private fun dummyData() = listOf(
        "dog",
        "cat",
        "owl",
        "cheetah",
        "raccoon",
        "bird",
        "snake",
        "lizard",
        "hamster",
        "bear",
        "lion",
        "tiger",
        "horse",
        "frog",
        "fish",
        "shark",
        "turtle",
        "elephant",
        "cow",
        "beaver",
        "bison",
        "porcupine",
        "rat",
        "mouse",
        "goose",
        "deer",
        "fox",
        "moose",
        "buffalo",
        "monkey",
        "penguin",
        "parrot",
        "chocobo"
    )

Recursos

El código del ejemplo en este gist

Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Un comentario en “Implementado RecyclerView con Kotlin y AndroidX

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: