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/IncomeAdapter.kt |   32 +++++++++++++++++++++++++++++---
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt
index 856ba45..67ba7d7 100644
--- a/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt
@@ -42,8 +42,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)
             }
         }
 
@@ -51,7 +66,11 @@
             currentGroup = group
             binding.tvStationName.text = group.stationName
             binding.tvPackageCount.text = "共${group.packages.size}笔收入"
+            
+            packagesAdapter.submitList(null)
             packagesAdapter.submitList(group.packages)
+            
+            binding.rvPackages.requestLayout()
         }
     }
 }
@@ -71,13 +90,20 @@
         holder.bind(pack)
     }
 
+    override fun getItemCount(): Int {
+        return currentList.size
+    }
+
     inner class ViewHolder(private val binding: ItemIncomePackageHomeBinding) :
         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)
+                }
             }
         }
 

--
Gitblit v1.9.3