From b808650f7c9456f83ab272be1203d5ad7a20bafe Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期三, 02 四月 2025 10:37:36 +0800
Subject: [PATCH] fix : 分类缓存
---
app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt | 101 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 93 insertions(+), 8 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
index 2445433..6bffe16 100644
--- a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
@@ -6,12 +6,20 @@
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.ListAdapter
import com.example.firstapp.databinding.ItemExpressGroupBinding
-import com.example.firstapp.databinding.ItemExpressPackageBinding
import androidx.recyclerview.widget.DiffUtil
import com.example.firstapp.model.ExpressGroup
import com.example.firstapp.model.ExpressPackage
+import com.example.firstapp.R
+import com.example.firstapp.databinding.ItemPackageBinding
+import com.example.firstapp.databinding.ItemExpressPackageHomeBinding
class ExpressAdapter : ListAdapter<ExpressGroup, ExpressAdapter.ViewHolder>(ExpressGroupDiffCallback()) {
+
+ private var onPackageClickListener: (ExpressGroup, ExpressPackage) -> Unit = { _, _ -> }
+
+ fun setOnPackageClickListener(listener: (ExpressGroup, ExpressPackage) -> Unit) {
+ onPackageClickListener = listener
+ }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = ItemExpressGroupBinding.inflate(
@@ -23,10 +31,17 @@
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val group = getItem(position)
holder.bind(group)
+ holder.setOnPackageClickListener(onPackageClickListener)
}
- class ViewHolder(private val binding: ItemExpressGroupBinding) : RecyclerView.ViewHolder(binding.root) {
- private val packagesAdapter = ExpressPackageAdapter()
+ inner class ViewHolder(private val binding: ItemExpressGroupBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+ private val packagesAdapter = ExpressPackageHomeAdapter { pack ->
+ currentGroup?.let { group ->
+ onPackageClickListener(group, pack)
+ }
+ }
+ private var currentGroup: ExpressGroup? = null
init {
binding.rvPackages.apply {
@@ -36,17 +51,25 @@
}
fun bind(group: ExpressGroup) {
+ currentGroup = group
binding.tvStationName.text = group.stationName
binding.tvPackageCount.text = "共${group.packages.size}个包裹"
packagesAdapter.submitList(group.packages)
}
+
+ fun setOnPackageClickListener(listener: (ExpressGroup, ExpressPackage) -> Unit) {
+ // 这个方法可以移除,因为我们在构造 ExpressPackageHomeAdapter 时已经处理了点击事件
+ // 或者保留这个方法但不做任何操作
+ }
}
}
-class ExpressPackageAdapter : ListAdapter<ExpressPackage, ExpressPackageAdapter.ViewHolder>(ExpressPackageDiffCallback()) {
-
+// 首页使用的包裹适配器 - 简化版本
+class ExpressPackageHomeAdapter(private val onPackageClick: (ExpressPackage) -> Unit) :
+ ListAdapter<ExpressPackage, ExpressPackageHomeAdapter.ViewHolder>(ExpressPackageDiffCallback()) {
+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
- val binding = ItemExpressPackageBinding.inflate(
+ val binding = ItemExpressPackageHomeBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
return ViewHolder(binding)
@@ -57,11 +80,73 @@
holder.bind(pack)
}
- class ViewHolder(private val binding: ItemExpressPackageBinding) : RecyclerView.ViewHolder(binding.root) {
+ inner class ViewHolder(private val binding: ItemExpressPackageHomeBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+
+ init {
+ binding.root.setOnClickListener {
+ val pack = getItem(adapterPosition)
+ onPackageClick(pack)
+ }
+ }
+
fun bind(pack: ExpressPackage) {
binding.tvCompany.text = pack.company
+ binding.tvCreateTime.text = pack.createTime
binding.tvTrackingNumber.text = pack.trackingNumber
- binding.tvDate.text = pack.date
+ }
+ }
+}
+
+// 取件页面使用的包裹适配器
+class ExpressPackageAdapter(private val onPackagePickup: (ExpressPackage) -> Unit = { _ -> }) :
+ ListAdapter<ExpressPackage, ExpressPackageAdapter.ViewHolder>(ExpressPackageDiffCallback()) {
+
+ private var onPackageClickListener: (ExpressPackage) -> Unit = {}
+ private var stationName: String = ""
+
+ fun setStationInfo(station: String) {
+ stationName = station
+ }
+
+ fun setOnPackageClickListener(listener: (ExpressPackage) -> Unit) {
+ onPackageClickListener = listener
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val binding = ItemPackageBinding.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: ItemPackageBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+
+ init {
+ binding.ivPackageStatus.setOnClickListener {
+ val pack = getItem(adapterPosition)
+ onPackagePickup(pack)
+ }
+
+ binding.root.setOnClickListener(null)
+ }
+
+ fun bind(pack: ExpressPackage) {
+ 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
+ )
}
}
}
--
Gitblit v1.9.3