From f67cf3b81a00f732ca743431258ae6b78f5f40ab Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期四, 17 四月 2025 15:05:28 +0800
Subject: [PATCH] 11、我的	切换头像  点击切换头像没有显示允许存储权限的窗口,华为的手机目前有 49、首页	实时刷新  点击全部取件或其他分类后,回到上一层,内容没有刷新(5个分类) 52、数据统计	数据统计  1.周月年的柱状图统计逻辑需要修改为只统计快递类的数据  2.按年的图形统计,右下方加上图示说明 53、首页	首页登录  点击用户协议、隐私政策无反应

---
 app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt |   52 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt
index b0e39a4..16bbf8d 100644
--- a/app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt
@@ -46,9 +46,29 @@
         private var currentGroup: FinanceGroup? = null
 
         init {
+            // 设置固定高度和禁用嵌套滚动来解决滑动问题
             binding.rvPackages.apply {
-                layoutManager = LinearLayoutManager(context)
+                layoutManager = object : LinearLayoutManager(context) {
+                    override fun canScrollVertically(): Boolean {
+                        // 禁用内部RecyclerView的垂直滚动
+                        return false
+                    }
+                    
+                    // 确保测量所有子项,防止部分内容不可见
+                    override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) {
+                        try {
+                            super.onLayoutChildren(recycler, state)
+                        } catch (e: IndexOutOfBoundsException) {
+                            // 捕获可能的异常,防止崩溃
+                        }
+                    }
+                }
                 adapter = packagesAdapter
+                // 禁用嵌套滚动,让外部RecyclerView处理所有滚动
+                isNestedScrollingEnabled = false
+                // 启用回收视图缓存
+                setItemViewCacheSize(20)
+                setHasFixedSize(true)
             }
         }
 
@@ -56,7 +76,13 @@
             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: (FinanceGroup, FinancePackage) -> Unit) {
@@ -81,14 +107,22 @@
         val pack = getItem(position)
         holder.bind(pack)
     }
+    
+    // 防止部分内容不显示
+    override fun getItemCount(): Int {
+        return currentList.size
+    }
 
     inner class ViewHolder(private val binding: ItemFinancePackageHomeBinding) :
         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)
+                }
             }
         }
 
@@ -126,14 +160,22 @@
         val pack = getItem(position)
         holder.bind(pack)
     }
+    
+    // 防止部分内容不显示
+    override fun getItemCount(): Int {
+        return currentList.size
+    }
 
     inner class ViewHolder(private val binding: ItemFinanceBinding) :
         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