| | |
| | | import com.example.firstapp.adapter.FinanceAdapter |
| | | import com.example.firstapp.adapter.CategorySelectorAdapter |
| | | import com.example.firstapp.adapter.IncomeAdapter |
| | | import com.example.firstapp.adapter.TrainAdapter |
| | | import com.example.firstapp.adapter.FlightAdapter |
| | | import com.example.firstapp.database.service.RetrofitClient |
| | | import com.example.firstapp.databinding.FragmentHomeBinding |
| | | import com.example.firstapp.databinding.DialogCategorySelectorBinding |
| | |
| | | private lateinit var expressAdapter: ExpressAdapter |
| | | private lateinit var financeAdapter: FinanceAdapter |
| | | private lateinit var incomeAdapter: IncomeAdapter |
| | | private lateinit var flightAdapter: FinanceAdapter |
| | | private lateinit var trainAdapter: FinanceAdapter |
| | | private lateinit var flightAdapter: FlightAdapter |
| | | private lateinit var trainAdapter: TrainAdapter |
| | | private lateinit var dataUpdateReceiver: BroadcastReceiver |
| | | private lateinit var reminderUpdateReceiver: BroadcastReceiver |
| | | private var reminderBadge: TextView? = null |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private fun setupAdapters() { |
| | | binding.expressRecycler.apply { |
| | | layoutManager = LinearLayoutManager(context) |
| | |
| | | |
| | | binding.flightRecycler.apply { |
| | | layoutManager = LinearLayoutManager(context) |
| | | flightAdapter = FinanceAdapter() |
| | | flightAdapter = FlightAdapter() |
| | | adapter = flightAdapter |
| | | visibility = View.GONE |
| | | |
| | | // 设置点击监听 |
| | | flightAdapter.setOnPackageClickListener { group, pack -> |
| | | // 跳转到航班处理页面 |
| | | val intent = Intent(requireContext(), PickupActivity::class.java).apply { |
| | | putExtra("station_name", group.stationName) |
| | | putExtra("company", pack.company) |
| | | putExtra("page_type", PickupActivity.TYPE_FLIGHT) |
| | | } |
| | | startActivity(intent) |
| | | } |
| | | } |
| | | |
| | | binding.trainRecycler.apply { |
| | | layoutManager = LinearLayoutManager(context) |
| | | trainAdapter = FinanceAdapter() |
| | | trainAdapter = TrainAdapter() |
| | | adapter = trainAdapter |
| | | visibility = View.GONE |
| | | |
| | | // 设置点击监听 |
| | | trainAdapter.setOnPackageClickListener { group, pack -> |
| | | // 跳转到火车票页面 |
| | | val intent = Intent(requireContext(), PickupActivity::class.java).apply { |
| | | putExtra("station_name", group.stationName) |
| | | putExtra("company", pack.company) |
| | | putExtra("page_type", PickupActivity.TYPE_TRAIN) |
| | | } |
| | | startActivity(intent) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | ) |
| | | |
| | | // 加载数据 |
| | | homeViewModel.loadExpressData() |
| | | homeViewModel.loadAllCategoryData() |
| | | // homeViewModel.loadExpressData() |
| | | // homeViewModel.loadFinanceData() |
| | | // homeViewModel.loadIncomeData() |
| | | // homeViewModel.loadFlightData() |
| | | // homeViewModel.loadTrainData() |
| | | |
| | | // 检查未读提醒数量 |
| | | homeViewModel.checkUnreadReminders() |
| | | |
| | | } |
| | | |
| | | override fun onPause() { |
| | |
| | | |
| | | // 添加设置未读提醒徽章的方法 |
| | | private fun setupUnreadBadge() { |
| | | // 创建未读消息数量的小红点 |
| | | reminderBadge = TextView(requireContext()).apply { |
| | | setBackgroundResource(R.drawable.circle_badge_background) |
| | | setTextColor(Color.WHITE) |
| | | gravity = Gravity.CENTER |
| | | textSize = 10f |
| | | minWidth = resources.getDimensionPixelSize(R.dimen.badge_min_width) |
| | | minHeight = resources.getDimensionPixelSize(R.dimen.badge_min_height) |
| | | setPadding(4, 0, 4, 0) |
| | | } |
| | | |
| | | // 添加到布局中 |
| | | val parentView = binding.reminderButton.parent as? ViewGroup |
| | | parentView?.addView(reminderBadge) |
| | | |
| | | // 调整位置到提醒按钮右上角 |
| | | (reminderBadge?.layoutParams as? FrameLayout.LayoutParams)?.apply { |
| | | gravity = Gravity.TOP or Gravity.END |
| | | width = 48 // 使用固定像素值 |
| | | height = 48 // 使用固定像素值 |
| | | // 设置位置偏移,使小红点位于图标右上角 |
| | | setMargins(0, 0, 0, 0) |
| | | } |
| | | // 直接使用布局中定义的小红点 |
| | | reminderBadge = binding.reminderBadge |
| | | } |
| | | |
| | | // 更新未读提醒徽章 |