|
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