cloudroam
2025-02-28 1097c45d8d6aa4b74a50e8d9a99dedab73f2bbad
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.example.firstapp.ui.reminder
 
import ReminderAdapter
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.firstapp.App
import com.example.firstapp.database.entity.Reminder
import com.example.firstapp.databinding.FragmentReminderSettingsBinding
 
class ReminderSettingsFragment : Fragment() {
 
    private var _binding: FragmentReminderSettingsBinding? = null
    private val binding get() = _binding!!
 
    private val reminderViewModel: ReminderViewModel by viewModels {
        ReminderViewModelFactory((requireActivity().application as App).reminderRepository)
    }
 
    private lateinit var adapter: ReminderAdapter
 
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentReminderSettingsBinding.inflate(inflater, container, false)
        return binding.root
    }
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 
        (activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
 
        setupSpinner()
        setupRecyclerView()
        setupClickListeners()
        observeReminders()
    }
 
    private fun setupSpinner() {
        val types = arrayOf("驿站", "财务", "其他")
        val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, types)
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        binding.spinnerType.adapter = adapter
    }
 
    private fun setupRecyclerView() {
        adapter = ReminderAdapter { reminder ->
            reminderViewModel.deleteReminder(reminder)
        }
        binding.recyclerReminders.apply {
            layoutManager = LinearLayoutManager(context)
            this.adapter = this@ReminderSettingsFragment.adapter
        }
    }
 
    private fun setupClickListeners() {
//        binding.btnClose.setOnClickListener {
//            findNavController().navigateUp()
//        }
 
        binding.btnAddReminder.setOnClickListener {
            val type = binding.spinnerType.selectedItem.toString()
            val nickname = binding.editNickname.text.toString()
            val keywords = binding.editKeywords.text.toString()
 
            if (nickname.isBlank() || keywords.isBlank()) {
                Toast.makeText(context, "请填写完整信息", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
 
            reminderViewModel.insertReminder(
                Reminder(
                    type = type,
                    nickname = nickname,
                    keywords = keywords
                )
            )
 
            binding.editNickname.text.clear()
            binding.editKeywords.text.clear()
        }
    }
 
    private fun observeReminders() {
        reminderViewModel.allReminders.observe(viewLifecycleOwner) { reminders ->
            adapter.submitList(reminders)
        }
    }
 
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }