View Binding en Recycler View, en Android Studio usando Kotlin


Mini apuntes de como implementar ViewBinding en un adaptador para RecyclerView.Adapter usando Android Studio y Kotlin.

Dependencias

En archivo gradle a nivel de aplicación añadir dentro del bloque android

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Layout

Crear archivo simple_list_item1.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:text="This a line" />

View Binding en RecyclerView Adapter

Se crea el adaptador MySimpleAdapter.kt para recyclerView con la siguiente base

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

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val binding = SimpleListItem1Binding
            .inflate(LayoutInflater.from(parent.context), parent, false)
        return MyViewHolder(binding)
    }

    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(private val binding: SimpleListItem1Binding) : RecyclerView.ViewHolder(binding.root) {

        private val context = binding.root.context
        private val text1 = binding.text1

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

    }

}
Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

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: