| | |
| | | import androidx.recyclerview.widget.LinearLayoutManager |
| | | import androidx.recyclerview.widget.RecyclerView |
| | | import com.example.firstapp.R |
| | | import com.example.firstapp.adapter.MyAdapter |
| | | import com.example.firstapp.adapter.ExpressAdapter |
| | | import com.example.firstapp.core.Core |
| | | import com.example.firstapp.databinding.FragmentHomeBinding |
| | | |
| | |
| | | private val binding get() = _binding!! |
| | | |
| | | private lateinit var homeViewModel: HomeViewModel |
| | | private lateinit var adapter: MyAdapter |
| | | 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 { |
| | | homeViewModel = |
| | | ViewModelProvider(this).get(HomeViewModel::class.java) |
| | | |
| | | _binding = FragmentHomeBinding.inflate(inflater, container, false) |
| | | val root: View = binding.root |
| | | return binding.root |
| | | } |
| | | |
| | | // val textView: TextView = binding.textHome |
| | | // homeViewModel.text.observe(viewLifecycleOwner) { |
| | | // textView.text = it |
| | | // } |
| | | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
| | | super.onViewCreated(view, savedInstanceState) |
| | | |
| | | //通过 ViewModelProvider 获取 HomeViewModel 的实例,以便在视图中使用。 |
| | | homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java) |
| | | |
| | | // 初始化适配器 |
| | | adapter = MyAdapter() |
| | | //调用这个方法来设置 RecyclerView用于设置 RecyclerView 的布局和适配器。 |
| | | setupRecyclerViews() |
| | | //调用这个方法来观察 ViewModel 中的数据变化 |
| | | observeViewModelData() |
| | | } |
| | | |
| | | // 获取数据 |
| | | // val codeList = Core.code.getAllDesc() |
| | | |
| | | // 使用 binding 来访问 RecyclerView |
| | | val recyclerView: RecyclerView = binding.recyclerView |
| | | recyclerView.layoutManager = LinearLayoutManager(requireContext()) // 使用 requireContext() 获取上下文 |
| | | recyclerView.adapter = adapter |
| | | |
| | | // 观察 LiveData,当数据发生变化时,更新 RecyclerView 的内容 |
| | | homeViewModel.codeList.observe(viewLifecycleOwner) { codeList -> |
| | | adapter.submitList(codeList) // 更新 RecyclerView 的数据 |
| | | // 滚动到顶部 |
| | | recyclerView.scrollToPosition(0) |
| | | private fun setupRecyclerViews() { |
| | | // 快递列表 |
| | | //layoutManager = LinearLayoutManager(context):设置 RecyclerView 的布局管理器为线性布局管理器,表示列表是垂直排列的。 |
| | | //创建一个 ExpressAdapter 的实例,用于提供 RecyclerView 的数据。 |
| | | //将适配器设置给 RecyclerView,以便显示数据。 |
| | | binding.expressRecycler.apply { |
| | | layoutManager = LinearLayoutManager(context) |
| | | expressAdapter = ExpressAdapter() |
| | | adapter = expressAdapter |
| | | } |
| | | |
| | | return root |
| | | // // 财务列表 |
| | | // 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() { |