package com.example.firstapp.adapter
|
|
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.firstapp.databinding.ItemReminderBinding
|
import com.example.firstapp.database.entity.Reminder
|
|
class ReminderAdapter(
|
private val onItemClick: (Reminder) -> Unit
|
) : ListAdapter<Reminder, ReminderAdapter.ViewHolder>(ReminderDiffCallback()) {
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
val binding = ItemReminderBinding.inflate(
|
LayoutInflater.from(parent.context),
|
parent,
|
false
|
)
|
return ViewHolder(binding)
|
}
|
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
holder.bind(getItem(position))
|
}
|
|
inner class ViewHolder(
|
private val binding: ItemReminderBinding
|
) : RecyclerView.ViewHolder(binding.root) {
|
|
init {
|
binding.root.setOnClickListener {
|
val position = bindingAdapterPosition
|
if (position != RecyclerView.NO_POSITION) {
|
onItemClick(getItem(position))
|
}
|
}
|
}
|
|
fun bind(reminder: Reminder) {
|
binding.categoryNameText.text = reminder.categoryName
|
binding.notificationMethodText.text = when(reminder.notificationMethod) {
|
"PHONE" -> "手机通知"
|
else -> "未设置"
|
}
|
}
|
}
|
|
private class ReminderDiffCallback : DiffUtil.ItemCallback<Reminder>() {
|
override fun areItemsTheSame(oldItem: Reminder, newItem: Reminder): Boolean {
|
return oldItem.id == newItem.id
|
}
|
|
override fun areContentsTheSame(oldItem: Reminder, newItem: Reminder): Boolean {
|
return oldItem == newItem
|
}
|
}
|
}
|