From 04b138d3836e03c9adbcbd367fd71d92905c5206 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 17 四月 2025 13:17:45 +0800 Subject: [PATCH] add: 重复登录处理 --- app/src/main/java/com/example/firstapp/adapter/FlightAdapter.kt | 43 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/adapter/FlightAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/FlightAdapter.kt index 2c1365f..e39c845 100644 --- a/app/src/main/java/com/example/firstapp/adapter/FlightAdapter.kt +++ b/app/src/main/java/com/example/firstapp/adapter/FlightAdapter.kt @@ -47,8 +47,23 @@ init { binding.rvPackages.apply { - layoutManager = LinearLayoutManager(context) + layoutManager = object : LinearLayoutManager(context) { + override fun canScrollVertically(): Boolean { + return false + } + + override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) { + try { + super.onLayoutChildren(recycler, state) + } catch (e: IndexOutOfBoundsException) { + // 捕获可能的异常,防止崩溃 + } + } + } adapter = packagesAdapter + isNestedScrollingEnabled = false + setItemViewCacheSize(20) + setHasFixedSize(true) } } @@ -56,7 +71,11 @@ currentGroup = group binding.tvStationName.text = group.stationName binding.tvPackageCount.text = "共${group.packages.size}张机票" + + packagesAdapter.submitList(null) packagesAdapter.submitList(group.packages) + + binding.rvPackages.requestLayout() } fun setOnPackageClickListener(listener: (FlightGroup, FlightPackage) -> Unit) { @@ -82,13 +101,20 @@ holder.bind(pack) } + override fun getItemCount(): Int { + return currentList.size + } + inner class ViewHolder(private val binding: ItemFlightPackageHomeBinding) : RecyclerView.ViewHolder(binding.root) { init { binding.root.setOnClickListener { - val pack = getItem(adapterPosition) - onPackageClick(pack) + val position = adapterPosition + if (position != RecyclerView.NO_POSITION) { + val pack = getItem(position) + onPackageClick(pack) + } } } @@ -127,13 +153,20 @@ holder.bind(pack) } + override fun getItemCount(): Int { + return currentList.size + } + inner class ViewHolder(private val binding: ItemFlightBinding) : RecyclerView.ViewHolder(binding.root) { init { binding.ivPackageStatus.setOnClickListener { - val pack = getItem(adapterPosition) - onPackagePickup(pack) + val position = adapterPosition + if (position != RecyclerView.NO_POSITION) { + val pack = getItem(position) + onPackagePickup(pack) + } } binding.root.setOnClickListener(null) -- Gitblit v1.9.3