cloudroam
10 天以前 04b138d3836e03c9adbcbd367fd71d92905c5206
app/src/main/java/com/example/firstapp/adapter/TrainAdapter.kt
@@ -47,8 +47,23 @@
        init {
            binding.rvPackages.apply {
                layoutManager = LinearLayoutManager(context)
                layoutManager = object : LinearLayoutManager(context) {
                    override fun canScrollVertically(): Boolean {
                        return false
                    }
                    override fun onLayoutChildren(recycler: RecyclerView.Recycler, state: RecyclerView.State) {
                        try {
                            super.onLayoutChildren(recycler, state)
                        } catch (e: IndexOutOfBoundsException) {
                            // 捕获可能的异常,防止崩溃
                        }
                    }
                }
                adapter = packagesAdapter
                isNestedScrollingEnabled = false
                setItemViewCacheSize(20)
                setHasFixedSize(true)
            }
        }
@@ -56,7 +71,11 @@
            currentGroup = group
            binding.tvStationName.text = group.stationName
            binding.tvPackageCount.text = "共${group.packages.size}张车票"
            packagesAdapter.submitList(null)
            packagesAdapter.submitList(group.packages)
            binding.rvPackages.requestLayout()
        }
        fun setOnPackageClickListener(listener: (TrainGroup, TrainPackage) -> Unit) {
@@ -82,13 +101,20 @@
        holder.bind(pack)
    }
    override fun getItemCount(): Int {
        return currentList.size
    }
    inner class ViewHolder(private val binding: ItemTrainPackageHomeBinding) :
        RecyclerView.ViewHolder(binding.root) {
        init {
            binding.root.setOnClickListener {
                val pack = getItem(adapterPosition)
                onPackageClick(pack)
                val position = adapterPosition
                if (position != RecyclerView.NO_POSITION) {
                    val pack = getItem(position)
                    onPackageClick(pack)
                }
            }
        }
@@ -127,13 +153,20 @@
        holder.bind(pack)
    }
    override fun getItemCount(): Int {
        return currentList.size
    }
    inner class ViewHolder(private val binding: ItemTrainBinding) :
        RecyclerView.ViewHolder(binding.root) {
        init {
            binding.ivPackageStatus.setOnClickListener {
                val pack = getItem(adapterPosition)
                onPackagePickup(pack)
                val position = adapterPosition
                if (position != RecyclerView.NO_POSITION) {
                    val pack = getItem(position)
                    onPackagePickup(pack)
                }
            }
            binding.root.setOnClickListener(null)