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
(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() { override fun areItemsTheSame(oldItem: Address, newItem: Address) = oldItem.id == newItem.id override fun areContentsTheSame(oldItem: Address, newItem: Address) = oldItem == newItem } } }