zhujie
9 天以前 88b00f3fc74446a1727c93722c7b64179b45a9db
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
    }
}
}