48 lines
1.8 KiB
Kotlin
48 lines
1.8 KiB
Kotlin
package com.example.basurapp.adapters
|
|
|
|
import android.view.LayoutInflater
|
|
import android.view.ViewGroup
|
|
import androidx.recyclerview.widget.DiffUtil
|
|
import androidx.recyclerview.widget.ListAdapter
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import com.example.basurapp.databinding.ItemAddressBinding
|
|
import com.example.basurapp.models.Address
|
|
|
|
class AddressesAdapter(
|
|
private val onDelete: (Address) -> Unit
|
|
) : ListAdapter<Address, AddressesAdapter.AddressViewHolder>(DIFF) {
|
|
|
|
inner class AddressViewHolder(val binding: ItemAddressBinding) :
|
|
RecyclerView.ViewHolder(binding.root) {
|
|
|
|
fun bind(address: Address) {
|
|
binding.tvStreet.text = "${address.street} ${address.number}"
|
|
binding.tvNeighborhood.text = address.neighborhood
|
|
if (address.reference.isNotEmpty()) {
|
|
binding.tvReference.text = address.reference
|
|
binding.tvReference.visibility = android.view.View.VISIBLE
|
|
} else {
|
|
binding.tvReference.visibility = android.view.View.GONE
|
|
}
|
|
binding.btnDelete.setOnClickListener { onDelete(address) }
|
|
}
|
|
}
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AddressViewHolder {
|
|
val binding = ItemAddressBinding.inflate(
|
|
LayoutInflater.from(parent.context), parent, false
|
|
)
|
|
return AddressViewHolder(binding)
|
|
}
|
|
|
|
override fun onBindViewHolder(holder: AddressViewHolder, position: Int) {
|
|
holder.bind(getItem(position))
|
|
}
|
|
|
|
companion object {
|
|
val DIFF = object : DiffUtil.ItemCallback<Address>() {
|
|
override fun areItemsTheSame(oldItem: Address, newItem: Address) = oldItem.id == newItem.id
|
|
override fun areContentsTheSame(oldItem: Address, newItem: Address) = oldItem == newItem
|
|
}
|
|
}
|
|
} |