1.2
tj
2025-04-11 27bbd0435881e408f267c99e6a253d2e17873bcc
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
            )
        }
    }
}