From a69ed0d5eed84bea789463e718a2774122348685 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 27 二月 2025 17:55:22 +0800
Subject: [PATCH] add: 取件列表信息

---
 app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt |  100 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 90 insertions(+), 10 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..dafbba4 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,68 @@
         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.tvTrackingNumber.text = pack.trackingNumber
-            binding.tvDate.text = pack.date
+            binding.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}"
+        }
+    }
+}
+
+// 取件页面使用的包裹适配器
+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.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}"
+            binding.ivPackageStatus.setImageResource(
+//                if (pack.isPickedUp) R.drawable.circle_checked
+//                else R.drawable.circle
+                R.drawable.circle
+            )
         }
     }
 }

--
Gitblit v1.9.3