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/FinanceAdapter.kt |  226 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 172 insertions(+), 54 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..3165790 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,33 @@
             currentGroup = group
             binding.tvStationName.text = group.stationName
             binding.tvPackageCount.text = "共${group.packages.size}笔账单"
+
+            // 根据驿站名称设置相应的图标
+            val stationName = group.stationName.lowercase()
+            val stationIconResId = when {
+                stationName.isEmpty() || stationName == "未知" -> R.drawable.finance_huankuan_normal
+                stationName.contains("安逸花") -> R.drawable.finance_anyihua
+                stationName.contains("房贷") -> R.drawable.finance_fangdai
+                stationName.contains("还款") -> R.drawable.finance_huankuan
+                stationName.contains("花呗") -> R.drawable.finance_huabei
+                stationName.contains("借呗") -> R.drawable.finance_jiebei
+                stationName.contains("京东白条") -> R.drawable.finance_jingdongbaitiao
+                stationName.contains("京东金条") -> R.drawable.finance_jingdongjintiao
+                stationName.contains("汽车分期") -> R.drawable.finance_qichefenqi
+                stationName.contains("省呗") -> R.drawable.finance_shenbei
+                stationName.contains("信用卡") -> R.drawable.finance_xingyongka
+                stationName.contains("支付宝") -> R.drawable.finance_zhifubao
+                else -> R.drawable.finance_huankuan_normal
+            }
+
+            binding.ivStationIcon.setImageResource(stationIconResId)
+
+            // 确保所有数据都被更新
+            packagesAdapter.submitList(null)
             packagesAdapter.submitList(group.packages)
+
+            // 请求布局刷新
+            binding.rvPackages.requestLayout()
         }
 
         fun setOnPackageClickListener(listener: (FinanceGroup, FinancePackage) -> Unit) {
@@ -82,13 +128,21 @@
         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)
+                }
             }
         }
 
@@ -96,62 +150,126 @@
             binding.tvCompany.text = pack.company
             binding.tvCreateTime.text = pack.createTime
             binding.tvTrackingNumber.text = pack.trackingNumber
+            val companyName = pack.company.lowercase()
+            val logoResId = when {
+                companyName.isEmpty() || companyName == "未知" -> R.drawable.finance_income_bank_normal
+                companyName.contains("工商银行") -> R.drawable.bank_gongshang
+                companyName.contains("光大银行") -> R.drawable.bank_guangda
+                companyName.contains("国家开发银行") -> R.drawable.bank_guojiakaifa
+                companyName.contains("恒丰银行") -> R.drawable.bank_hengfeng
+                companyName.contains("华夏银行") -> R.drawable.bank_huaxia
+                companyName.contains("花呗分期") -> R.drawable.bank_huabeifenqi
+                companyName.contains("建设银行") -> R.drawable.bank_jianshe
+                companyName.contains("交通银行") -> R.drawable.bank_jiaotong
+                companyName.contains("民生银行") -> R.drawable.bank_mingsheng
+                companyName.contains("南京银行") -> R.drawable.bank_nanjing
+                companyName.contains("农商银行") -> R.drawable.bank_nongshang
+                companyName.contains("农业银行") -> R.drawable.bank_nongye
+                companyName.contains("平安银行") -> R.drawable.bank_pingan
+                companyName.contains("浦发银行") -> R.drawable.bank_pufa
+                companyName.contains("苏州银行") -> R.drawable.bank_suzhou
+                companyName.contains("邮储银行") -> R.drawable.bank_youzheng
+                companyName.contains("招商银行") -> R.drawable.bank_zhaoshang
+                companyName.contains("中国银行") -> R.drawable.bank_zhongguo
+                companyName.contains("中信银行") -> R.drawable.bank_zhongxin
+                companyName.contains("中原银行") -> R.drawable.bank_zhongyuan
+                companyName.contains("支付宝") -> R.drawable.finance_zhifubao
+                else -> R.drawable.finance_income_bank_normal
+            }
+            binding.ivCompanyLogo.setImageResource(logoResId)
         }
     }
 }
 
 // 取件页面使用的包裹适配器
-class FinancePackageAdapter(private val onPackagePickup: (FinancePackage) -> Unit = { _ -> }) :
-    ListAdapter<FinancePackage, FinancePackageAdapter.ViewHolder>(FinancePackageDiffCallback()) {
-
-    private var onPackageClickListener: (FinancePackage) -> Unit = {}
-    private var stationName: String = ""
-
-    fun setStationInfo(station: String) {
-        stationName = station
-    }
-
-    fun setOnPackageClickListener(listener: (FinancePackage) -> Unit) {
-        onPackageClickListener = listener
-    }
-
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
-        val binding = ItemFinanceBinding.inflate(
-            LayoutInflater.from(parent.context), parent, false
-        )
-        return ViewHolder(binding)
-    }
-
-    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
-        val pack = getItem(position)
-        holder.bind(pack)
-    }
-
-    inner class ViewHolder(private val binding: ItemFinanceBinding) :
-        RecyclerView.ViewHolder(binding.root) {
-
-        init {
-            binding.ivPackageStatus.setOnClickListener {
-                val pack = getItem(adapterPosition)
-                onPackagePickup(pack)
-            }
-
-            binding.root.setOnClickListener(null)
-        }
-
-        fun bind(pack: FinancePackage) {
-            binding.tvPackageId.text = pack.id.toString()
-            binding.tvCompany.text = pack.company
-            binding.tvCreateTime.text = pack.createTime
-            binding.tvTrackingNumber.text = pack.trackingNumber
-            binding.ivPackageStatus.setImageResource(
-//                if (pack.isPickedUp) R.drawable.circle_checked
-//                else R.drawable.circle
-                R.drawable.circle
-            )
-        }
-    }
-}
+//class FinancePackageAdapter(private val onPackagePickup: (FinancePackage) -> Unit = { _ -> }) :
+//    ListAdapter<FinancePackage, FinancePackageAdapter.ViewHolder>(FinancePackageDiffCallback()) {
+//
+//    private var onPackageClickListener: (FinancePackage) -> Unit = {}
+//    private var stationName: String = ""
+//
+//    fun setStationInfo(station: String) {
+//        stationName = station
+//    }
+//
+//    fun setOnPackageClickListener(listener: (FinancePackage) -> Unit) {
+//        onPackageClickListener = listener
+//    }
+//
+//    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+//        val binding = ItemFinanceBinding.inflate(
+//            LayoutInflater.from(parent.context), parent, false
+//        )
+//        return ViewHolder(binding)
+//    }
+//
+//    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+//        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 position = adapterPosition
+//                if (position != RecyclerView.NO_POSITION) {
+//                    val pack = getItem(position)
+//                    onPackagePickup(pack)
+//                }
+//            }
+//
+//            binding.root.setOnClickListener(null)
+//        }
+//
+//        fun bind(pack: FinancePackage) {
+//            binding.tvPackageId.text = pack.id.toString()
+//            binding.tvCompany.text = pack.company
+//            binding.tvCreateTime.text = pack.createTime
+//            binding.tvTrackingNumber.text = pack.trackingNumber
+//            binding.ivPackageStatus.setImageResource(
+////                if (pack.isPickedUp) R.drawable.circle_checked
+////                else R.drawable.circle
+//                R.drawable.circle
+//            )
+//            // 根据快递公司名称设置相应的图标
+//            val companyName = pack.company.lowercase()
+//            val logoResId = when {
+//                companyName.isEmpty() || companyName == "未知" -> R.drawable.finance_income_bank_normal
+//                companyName.contains("工商银行") -> R.drawable.bank_gongshang
+//                companyName.contains("光大银行") -> R.drawable.bank_guangda
+//                companyName.contains("国家开发银行") -> R.drawable.bank_guojiakaifa
+//                companyName.contains("恒丰银行") -> R.drawable.bank_hengfeng
+//                companyName.contains("华夏银行") -> R.drawable.bank_huaxia
+//                companyName.contains("花呗分期") -> R.drawable.bank_huabeifenqi
+//                companyName.contains("建设银行") -> R.drawable.bank_jianshe
+//                companyName.contains("交通银行") -> R.drawable.bank_jiaotong
+//                companyName.contains("民生银行") -> R.drawable.bank_mingsheng
+//                companyName.contains("南京银行") -> R.drawable.bank_nanjing
+//                companyName.contains("农商银行") -> R.drawable.bank_nongshang
+//                companyName.contains("农业银行") -> R.drawable.bank_nongye
+//                companyName.contains("平安银行") -> R.drawable.bank_pingan
+//                companyName.contains("浦发银行") -> R.drawable.bank_pufa
+//                companyName.contains("苏州银行") -> R.drawable.bank_suzhou
+//                companyName.contains("邮储银行") -> R.drawable.bank_youzheng
+//                companyName.contains("招商银行") -> R.drawable.bank_zhaoshang
+//                companyName.contains("中国银行") -> R.drawable.bank_zhongguo
+//                companyName.contains("中信银行") -> R.drawable.bank_zhongxin
+//                companyName.contains("中原银行") -> R.drawable.bank_zhongyuan
+//                else -> R.drawable.finance_income_bank_normal
+//            }
+//
+//            binding.ivCompanyLogo.setImageResource(logoResId)
+//
+//        }
+//    }
+//}
 
 
 private class FinanceGroupDiffCallback : DiffUtil.ItemCallback<FinanceGroup>() {

--
Gitblit v1.9.3