From 1a281d8354622a3606360f9f9a7fe4bb7d6a2c3a Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期日, 27 四月 2025 13:22:26 +0800
Subject: [PATCH] fix 短信

---
 app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt |   90 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 86 insertions(+), 4 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..fd341a8 100644
--- a/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/IncomeAdapter.kt
@@ -6,6 +6,7 @@
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
+import com.example.firstapp.R
 import com.example.firstapp.databinding.ItemIncomeGroupBinding
 import com.example.firstapp.databinding.ItemIncomePackageHomeBinding
 import com.example.firstapp.model.IncomeGroup
@@ -42,8 +43,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 +67,39 @@
             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_income_bank_normal
+                stationName.contains("工商银行") -> R.drawable.bank_gongshang
+                stationName.contains("光大银行") -> R.drawable.bank_guangda
+                stationName.contains("国家开发银行") -> R.drawable.bank_guojiakaifa
+                stationName.contains("恒丰银行") -> R.drawable.bank_hengfeng
+                stationName.contains("华夏银行") -> R.drawable.bank_huaxia
+                stationName.contains("花呗分期") -> R.drawable.bank_huabeifenqi
+                stationName.contains("建设银行") -> R.drawable.bank_jianshe
+                stationName.contains("交通银行") -> R.drawable.bank_jiaotong
+                stationName.contains("民生银行") -> R.drawable.bank_mingsheng
+                stationName.contains("南京银行") -> R.drawable.bank_nanjing
+                stationName.contains("农商银行") -> R.drawable.bank_nongshang
+                stationName.contains("农业银行") -> R.drawable.bank_nongye
+                stationName.contains("平安银行") -> R.drawable.bank_pingan
+                stationName.contains("浦发银行") -> R.drawable.bank_pufa
+                stationName.contains("苏州银行") -> R.drawable.bank_suzhou
+                stationName.contains("邮储银行") -> R.drawable.bank_youzheng
+                stationName.contains("招商银行") -> R.drawable.bank_zhaoshang
+                stationName.contains("中国银行") -> R.drawable.bank_zhongguo
+                stationName.contains("中信银行") -> R.drawable.bank_zhongxin
+                stationName.contains("中原银行") -> R.drawable.bank_zhongyuan
+                else -> R.drawable.finance_income_bank_normal
+            }
+
+            binding.ivStationIcon.setImageResource(stationIconResId)
+
+            packagesAdapter.submitList(null)
             packagesAdapter.submitList(group.packages)
+
+            binding.rvPackages.requestLayout()
         }
     }
 }
@@ -71,13 +119,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)
+                }
             }
         }
 
@@ -85,6 +140,33 @@
             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)
 //            binding.tvBalance.text = "余额: ¥${pack.balance}"
         }
     }
@@ -108,4 +190,4 @@
     override fun areContentsTheSame(oldItem: IncomePackage, newItem: IncomePackage): Boolean {
         return oldItem == newItem
     }
-} 
\ No newline at end of file
+}
\ No newline at end of file

--
Gitblit v1.9.3