cloudroam
9 天以前 e103a70d2ac198ebbd7493eb657e2cd23089d028
app/src/main/java/com/example/firstapp/adapter/FinanceAdapter.kt
@@ -53,7 +53,7 @@
                        // 禁用内部RecyclerView的垂直滚动
                        return false
                    }
                    // 确保测量所有子项,防止部分内容不可见
                    override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) {
                        try {
@@ -76,11 +76,31 @@
            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()
        }
@@ -107,7 +127,7 @@
        val pack = getItem(position)
        holder.bind(pack)
    }
    // 防止部分内容不显示
    override fun getItemCount(): Int {
        return currentList.size
@@ -130,70 +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)
    }
    // 防止部分内容不显示
    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
            )
        }
    }
}
//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>() {