cloudroam
2025-02-27 a69ed0d5eed84bea789463e718a2774122348685
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
106
107
package com.example.firstapp.ui.home
 
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.firstapp.R
import com.example.firstapp.activity.PickupActivity
import com.example.firstapp.adapter.ExpressAdapter
import com.example.firstapp.core.Core
import com.example.firstapp.databinding.FragmentHomeBinding
 
class HomeFragment : Fragment() {
 
    private var _binding: FragmentHomeBinding? = null
 
    // This property is only valid between onCreateView and
    // onDestroyView.
    private val binding get() = _binding!!
 
    private lateinit var homeViewModel: HomeViewModel
    private lateinit var expressAdapter: ExpressAdapter
//    private lateinit var financeAdapter: FinanceAdapter
//    private lateinit var memorialAdapter: MemorialAdapter
 
    //onCreateView这个方法创建后被调用,通常是初始化视图组件和观察者
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentHomeBinding.inflate(inflater, container, false)
        return binding.root
    }
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 
        //通过 ViewModelProvider 获取 HomeViewModel 的实例,以便在视图中使用。
        homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
 
        //调用这个方法来设置 RecyclerView用于设置 RecyclerView 的布局和适配器。
        setupRecyclerViews()
        //调用这个方法来观察 ViewModel 中的数据变化
        observeViewModelData()
    }
 
    private fun setupRecyclerViews() {
        binding.expressRecycler.apply {
            layoutManager = LinearLayoutManager(context)
            expressAdapter = ExpressAdapter()
            adapter = expressAdapter
            
            // 设置点击监听
            expressAdapter.setOnPackageClickListener { group, pack ->
                // 跳转到取件页面
                val intent = Intent(requireContext(), PickupActivity::class.java).apply {
                    putExtra("station_name", group.stationName)
                    putExtra("company", pack.company)
                }
                startActivity(intent)
            }
        }
 
//        // 财务列表
//        binding.financeRecycler.apply {
//            layoutManager = LinearLayoutManager(context)
//            financeAdapter = FinanceAdapter()
//            adapter = financeAdapter
//        }
//
//        // 纪念日列表
//        binding.memorialRecycler.apply {
//            layoutManager = LinearLayoutManager(context)
//            memorialAdapter = MemorialAdapter()
//            adapter = memorialAdapter
//        }
    }
 
    //这个方法用于观察 homeViewModel 中的 expressItems 数据。
    private fun observeViewModelData() {
        //当 expressItems 数据发生变化时,更新 RecyclerView 的数据。
        homeViewModel.expressItems.observe(viewLifecycleOwner) { items ->
            //将新的数据列表提交给适配器,以更新 RecyclerView 的显示内容。
            expressAdapter.submitList(items)
        }
 
//        homeViewModel.financeItems.observe(viewLifecycleOwner) { items ->
//            financeAdapter.submitList(items)
//        }
//
//        homeViewModel.memorialItems.observe(viewLifecycleOwner) { items ->
//            memorialAdapter.submitList(items)
//        }
    }
 
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}