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
}
}
}