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.R
|
import com.example.firstapp.database.entity.ReminderRecord
|
import com.example.firstapp.databinding.ItemReminderRecordBinding
|
import java.text.SimpleDateFormat
|
import java.util.*
|
|
class ReminderRecordAdapter(
|
private val onItemClick: (ReminderRecord) -> Unit
|
) : ListAdapter<ReminderRecord, ReminderRecordAdapter.ViewHolder>(ReminderRecordDiffCallback()) {
|
|
private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault())
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
val binding = ItemReminderRecordBinding.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: ItemReminderRecordBinding
|
) : RecyclerView.ViewHolder(binding.root) {
|
|
init {
|
binding.root.setOnClickListener {
|
val position = bindingAdapterPosition
|
if (position != RecyclerView.NO_POSITION) {
|
onItemClick(getItem(position))
|
}
|
}
|
}
|
|
fun bind(record: ReminderRecord) {
|
binding.apply {
|
// 设置图标
|
// 根据提醒类别设置不同图标
|
val iconResource = when (record.categoryId) {
|
1 -> R.drawable.reminder_express // 快递
|
2 -> R.drawable.reminder_finance // 还款
|
3 -> R.drawable.reminder_income // 收入
|
4 -> R.drawable.reminder_flight // 航班
|
5 -> R.drawable.reminder_train // 火车票
|
else -> R.drawable.reminder_express // 默认使用快递图标
|
}
|
categoryIcon.setImageResource(iconResource)
|
contentText.text = record.content
|
timeText.text = dateFormat.format(Date(record.createdAt))
|
|
// 保留已读/未读状态的视觉区分,现在仅通过整体项目透明度区分
|
val alpha = if (record.status == ReminderRecord.STATUS_UNREAD) 1.0f else 0.7f
|
root.alpha = alpha
|
}
|
}
|
}
|
|
private class ReminderRecordDiffCallback : DiffUtil.ItemCallback<ReminderRecord>() {
|
override fun areItemsTheSame(oldItem: ReminderRecord, newItem: ReminderRecord): Boolean {
|
return oldItem.id == newItem.id
|
}
|
|
override fun areContentsTheSame(oldItem: ReminderRecord, newItem: ReminderRecord): Boolean {
|
return oldItem == newItem
|
}
|
}
|
}
|