|
1 | 1 | package fr.free.nrw.commons.explore.depictions |
2 | 2 |
|
3 | | -import android.view.View |
| 3 | +import android.view.LayoutInflater |
4 | 4 | import android.view.ViewGroup |
5 | 5 | import androidx.paging.PagedListAdapter |
6 | 6 | import androidx.recyclerview.widget.DiffUtil |
7 | 7 | import androidx.recyclerview.widget.RecyclerView |
8 | 8 | import fr.free.nrw.commons.R |
9 | | -import fr.free.nrw.commons.explore.paging.inflate |
| 9 | +import fr.free.nrw.commons.databinding.ItemDepictionsBinding |
10 | 10 | import fr.free.nrw.commons.upload.structure.depictions.DepictedItem |
11 | | -import kotlinx.android.extensions.LayoutContainer |
12 | | -import kotlinx.android.synthetic.main.item_depictions.* |
13 | 11 |
|
| 12 | +class DepictionAdapter(private val onDepictionClicked: (DepictedItem) -> Unit) : |
| 13 | + PagedListAdapter<DepictedItem, DepictedItemViewHolder>(DepictionDiffUtilCallback) { |
14 | 14 |
|
15 | | -class DepictionAdapter(val onDepictionClicked: (DepictedItem) -> Unit) : |
16 | | - PagedListAdapter<DepictedItem, DepictedItemViewHolder>( |
17 | | - object : DiffUtil.ItemCallback<DepictedItem>() { |
18 | | - override fun areItemsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = |
19 | | - oldItem.id == newItem.id |
20 | | - |
21 | | - override fun areContentsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = |
22 | | - oldItem == newItem |
23 | | - } |
24 | | - ) { |
25 | | - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DepictedItemViewHolder { |
26 | | - return DepictedItemViewHolder(parent.inflate(R.layout.item_depictions)) |
27 | | - } |
| 15 | + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = DepictedItemViewHolder( |
| 16 | + ItemDepictionsBinding.inflate(LayoutInflater.from(parent.context), parent, false) |
| 17 | + ) |
28 | 18 |
|
29 | 19 | override fun onBindViewHolder(holder: DepictedItemViewHolder, position: Int) { |
30 | 20 | holder.bind(getItem(position)!!, onDepictionClicked) |
31 | 21 | } |
32 | 22 | } |
33 | 23 |
|
34 | | -class DepictedItemViewHolder(override val containerView: View) : |
35 | | - RecyclerView.ViewHolder(containerView), LayoutContainer { |
36 | | - fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) { |
37 | | - containerView.setOnClickListener { onDepictionClicked(item) } |
38 | | - depicts_label.text = item.name |
| 24 | +class DepictedItemViewHolder( |
| 25 | + private val binding: ItemDepictionsBinding |
| 26 | +) : RecyclerView.ViewHolder(binding.root) { |
| 27 | + fun bind(item: DepictedItem, onDepictionClicked: (DepictedItem) -> Unit) = with(binding) { |
| 28 | + root.setOnClickListener { onDepictionClicked(item) } |
| 29 | + depictsLabel.text = item.name |
39 | 30 | description.text = item.description |
40 | 31 | if (item.imageUrl?.isNotBlank() == true) { |
41 | | - depicts_image.setImageURI(item.imageUrl) |
| 32 | + depictsImage.setImageURI(item.imageUrl) |
42 | 33 | } else { |
43 | | - depicts_image.setActualImageResource(R.drawable.ic_wikidata_logo_24dp) |
| 34 | + depictsImage.setActualImageResource(R.drawable.ic_wikidata_logo_24dp) |
44 | 35 | } |
45 | 36 | } |
46 | 37 | } |
| 38 | + |
| 39 | +private object DepictionDiffUtilCallback : DiffUtil.ItemCallback<DepictedItem>() { |
| 40 | + override fun areItemsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = |
| 41 | + oldItem.id == newItem.id |
| 42 | + |
| 43 | + override fun areContentsTheSame(oldItem: DepictedItem, newItem: DepictedItem) = |
| 44 | + oldItem == newItem |
| 45 | +} |
0 commit comments