cloudroam
2025-02-26 b653b90d4598ee2a65bceffa793bb75353b6d186
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
package com.example.firstapp.ui.home
 
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.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() {
        // 快递列表
        //layoutManager = LinearLayoutManager(context):设置 RecyclerView 的布局管理器为线性布局管理器,表示列表是垂直排列的。
        //创建一个 ExpressAdapter 的实例,用于提供 RecyclerView 的数据。
        //将适配器设置给 RecyclerView,以便显示数据。
        binding.expressRecycler.apply {
            layoutManager = LinearLayoutManager(context)
            expressAdapter = ExpressAdapter()
            adapter = expressAdapter
        }
 
//        // 财务列表
//        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
    }
}