cloudroam
2025-03-27 4ed001ff84ed21bf32da85dbc4ba53ff2829e987
app/src/main/java/com/example/firstapp/ui/reminder/ReminderSettingsFragment.kt
@@ -1,18 +1,31 @@
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,
@@ -26,21 +39,62 @@
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // 返回按钮点击事件
        binding.btnBack.setOnClickListener {
            findNavController().navigateUp()
        }
        (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 reminderText = binding.editQuickReminder.text.toString()
            if (reminderText.isNotEmpty()) {
                // TODO: 保存提醒到数据库
                Toast.makeText(context, "提醒已添加", Toast.LENGTH_SHORT).show()
                binding.editQuickReminder.text.clear()
            } else {
                Toast.makeText(context, "请输入提醒内容", Toast.LENGTH_SHORT).show()
            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)
        }
    }