Converted the DepictionAdapter to use ViewBinding (#4689)

This commit is contained in:
Paul Hawke 2021-11-06 04:51:13 -05:00 committed by GitHub
parent eb8882ab48
commit 462a2ac007
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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<DepictedItem, DepictedItemViewHolder>(DepictionDiffUtilCallback) {
class DepictionAdapter(val onDepictionClicked: (DepictedItem) -> Unit) :
PagedListAdapter<DepictedItem, DepictedItemViewHolder>(
object : DiffUtil.ItemCallback<DepictedItem>() {
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<DepictedItem>() {
override fun areItemsTheSame(oldItem: DepictedItem, newItem: DepictedItem) =
oldItem.id == newItem.id
override fun areContentsTheSame(oldItem: DepictedItem, newItem: DepictedItem) =
oldItem == newItem
}