From 462a2ac007b0c50294e3267e25b6f50da232214a Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Sat, 6 Nov 2021 04:51:13 -0500 Subject: [PATCH] Converted the DepictionAdapter to use ViewBinding (#4689) --- .../explore/depictions/DepictionAdapter.kt | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictionAdapter.kt b/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictionAdapter.kt index 6f6805692..632881150 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictionAdapter.kt +++ b/app/src/main/java/fr/free/nrw/commons/explore/depictions/DepictionAdapter.kt @@ -1,46 +1,45 @@ package fr.free.nrw.commons.explore.depictions -import android.view.View +import android.view.LayoutInflater import android.view.ViewGroup import androidx.paging.PagedListAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import fr.free.nrw.commons.R -import fr.free.nrw.commons.explore.paging.inflate +import fr.free.nrw.commons.databinding.ItemDepictionsBinding import fr.free.nrw.commons.upload.structure.depictions.DepictedItem -import kotlinx.android.extensions.LayoutContainer -import kotlinx.android.synthetic.main.item_depictions.* +class DepictionAdapter(private val onDepictionClicked: (DepictedItem) -> Unit) : + PagedListAdapter(DepictionDiffUtilCallback) { -class DepictionAdapter(val onDepictionClicked: (DepictedItem) -> Unit) : - PagedListAdapter( - object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = - oldItem.id == newItem.id - - override fun areContentsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = - oldItem == newItem - } - ) { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DepictedItemViewHolder { - return DepictedItemViewHolder(parent.inflate(R.layout.item_depictions)) - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = DepictedItemViewHolder( + ItemDepictionsBinding.inflate(LayoutInflater.from(parent.context), parent, false) + ) override fun onBindViewHolder(holder: DepictedItemViewHolder, position: Int) { holder.bind(getItem(position)!!, onDepictionClicked) } } -class DepictedItemViewHolder(override val containerView: View) : - RecyclerView.ViewHolder(containerView), LayoutContainer { - fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) { - containerView.setOnClickListener { onDepictionClicked(item) } - depicts_label.text = item.name +class DepictedItemViewHolder( + private val binding: ItemDepictionsBinding +) : RecyclerView.ViewHolder(binding.root) { + fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) = with(binding) { + root.setOnClickListener { onDepictionClicked(item) } + depictsLabel.text = item.name description.text = item.description if (item.imageUrl?.isNotBlank() == true) { - depicts_image.setImageURI(item.imageUrl) + depictsImage.setImageURI(item.imageUrl) } else { - depicts_image.setActualImageResource(R.drawable.ic_wikidata_logo_24dp) + depictsImage.setActualImageResource(R.drawable.ic_wikidata_logo_24dp) } } } + +private object DepictionDiffUtilCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = + oldItem.id == newItem.id + + override fun areContentsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = + oldItem == newItem +}