cloudroam
2025-04-10 5fc9567cfa6b6beee4f52a9f835f304865d693e1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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 {
                categoryNameText.text = record.categoryName
                contentText.text = record.content
                timeText.text = dateFormat.format(Date(record.createdAt))
                
                // 设置状态图标
                statusIcon.setImageResource(
                    if (record.status == ReminderRecord.STATUS_UNREAD) 
                        R.drawable.ic_reminder
                    else 
                        R.drawable.ic_add
                )
            }
        }
    }
 
    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
        }
    }