| | |
| | | // 禁用内部RecyclerView的垂直滚动 |
| | | return false |
| | | } |
| | | |
| | | |
| | | // 确保测量所有子项,防止部分内容不可见 |
| | | override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) { |
| | | try { |
| | |
| | | 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() |
| | | } |
| | |
| | | val pack = getItem(position) |
| | | holder.bind(pack) |
| | | } |
| | | |
| | | |
| | | // 防止部分内容不显示 |
| | | override fun getItemCount(): Int { |
| | | return currentList.size |
| | |
| | | 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>() { |