From 5fc9567cfa6b6beee4f52a9f835f304865d693e1 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 10 四月 2025 18:13:58 +0800 Subject: [PATCH] add: 消息提醒后版本 --- app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt | 67 ++++++++++++++++++++++----------- 1 files changed, 44 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt index 3a579bc..73979ac 100644 --- a/app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt +++ b/app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt @@ -1,38 +1,59 @@ +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 } \ No newline at end of file -- Gitblit v1.9.3