| | |
| | | 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.database.entity.Reminder |
| | | import com.example.firstapp.databinding.ItemReminderBinding |
| | | import com.example.firstapp.database.entity.Reminder |
| | | |
| | | class ReminderAdapter(private val onDelete: (Reminder) -> Unit) : |
| | | ListAdapter<Reminder, ReminderAdapter.ReminderViewHolder>(ReminderDiffCallback()) { |
| | | class ReminderAdapter( |
| | | private val onItemClick: (Reminder) -> Unit |
| | | ) : ListAdapter<Reminder, ReminderAdapter.ViewHolder>(ReminderDiffCallback()) { |
| | | |
| | | class ReminderViewHolder(private val binding: ItemReminderBinding) : |
| | | RecyclerView.ViewHolder(binding.root) { |
| | | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { |
| | | val binding = ItemReminderBinding.inflate( |
| | | LayoutInflater.from(parent.context), |
| | | parent, |
| | | false |
| | | ) |
| | | return ViewHolder(binding) |
| | | } |
| | | |
| | | fun bind(reminder: Reminder, onDelete: (Reminder) -> Unit) { |
| | | binding.textNickname.text = reminder.nickname |
| | | //binding.textKeywords.text = reminder.keywords |
| | | binding.btnDelete.setOnClickListener { onDelete(reminder) } |
| | | 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 -> "未设置" |
| | | } |
| | | } |
| | | } |
| | | |
| | | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ReminderViewHolder { |
| | | return ReminderViewHolder( |
| | | ItemReminderBinding.inflate( |
| | | LayoutInflater.from(parent.context), parent, false |
| | | ) |
| | | ) |
| | | } |
| | | private class ReminderDiffCallback : DiffUtil.ItemCallback<Reminder>() { |
| | | override fun areItemsTheSame(oldItem: Reminder, newItem: Reminder): Boolean { |
| | | return oldItem.id == newItem.id |
| | | } |
| | | |
| | | override fun onBindViewHolder(holder: ReminderViewHolder, position: Int) { |
| | | holder.bind(getItem(position), onDelete) |
| | | override fun areContentsTheSame(oldItem: Reminder, newItem: Reminder): Boolean { |
| | | return oldItem == newItem |
| | | } |
| | | } |
| | | } |
| | | |
| | | class ReminderDiffCallback : DiffUtil.ItemCallback<Reminder>() { |
| | | override fun areItemsTheSame(oldItem: Reminder, newItem: Reminder) = oldItem.id == newItem.id |
| | | override fun areContentsTheSame(oldItem: Reminder, newItem: Reminder) = oldItem == newItem |
| | | } |