From 88b00f3fc74446a1727c93722c7b64179b45a9db Mon Sep 17 00:00:00 2001 From: zhujie <leon.zhu@cloudroam.com.cn> Date: 星期五, 18 四月 2025 17:40:45 +0800 Subject: [PATCH] Merge branch 'master' of http://47.96.225.205:8888/r/FirstApp2 --- 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