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 package fr.free.nrw.commons.explore.depictions
import android.view.View import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.paging.PagedListAdapter import androidx.paging.PagedListAdapter
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import fr.free.nrw.commons.R 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 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) : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = DepictedItemViewHolder(
PagedListAdapter<DepictedItem, DepictedItemViewHolder>( ItemDepictionsBinding.inflate(LayoutInflater.from(parent.context), parent, false)
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 onBindViewHolder(holder: DepictedItemViewHolder, position: Int) { override fun onBindViewHolder(holder: DepictedItemViewHolder, position: Int) {
holder.bind(getItem(position)!!, onDepictionClicked) holder.bind(getItem(position)!!, onDepictionClicked)
} }
} }
class DepictedItemViewHolder(override val containerView: View) : class DepictedItemViewHolder(
RecyclerView.ViewHolder(containerView), LayoutContainer { private val binding: ItemDepictionsBinding
fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) { ) : RecyclerView.ViewHolder(binding.root) {
containerView.setOnClickListener { onDepictionClicked(item) } fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) = with(binding) {
depicts_label.text = item.name root.setOnClickListener { onDepictionClicked(item) }
depictsLabel.text = item.name
description.text = item.description description.text = item.description
if (item.imageUrl?.isNotBlank() == true) { if (item.imageUrl?.isNotBlank() == true) {
depicts_image.setImageURI(item.imageUrl) depictsImage.setImageURI(item.imageUrl)
} else { } 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
}