feat: 国际进港舱单添加分单子列表展开/收起功能
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.lukouguoji.gjj.holder
|
||||
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpManifestSubBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.bean.GjjHaWb
|
||||
import com.lukouguoji.module_base.bean.GjjManifest
|
||||
|
||||
/**
|
||||
* 国际进港舱单 - 分单子列表 ViewHolder
|
||||
*/
|
||||
class IntImpManifestSubViewHolder(view: View) :
|
||||
BaseViewHolder<GjjHaWb, ItemIntImpManifestSubBinding>(view) {
|
||||
|
||||
override fun onBind(item: Any?, position: Int) {
|
||||
val bean = getItemBean(item) ?: return
|
||||
binding.bean = bean
|
||||
binding.position = position
|
||||
binding.executePendingBindings()
|
||||
|
||||
// 单选框点击切换选择状态
|
||||
binding.ivCheckbox.setOnClickListener {
|
||||
val newCheckedState = !bean.checked.get()
|
||||
bean.checked.set(newCheckedState)
|
||||
binding.executePendingBindings()
|
||||
|
||||
// 反向联动主列表项(勾选子项时自动勾选父项)
|
||||
if (newCheckedState) {
|
||||
val recyclerView = itemView.parent as? RecyclerView ?: return@setOnClickListener
|
||||
val parentBean = recyclerView.tag as? GjjManifest ?: return@setOnClickListener
|
||||
parentBean.checked.set(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.lukouguoji.gjj.holder
|
||||
|
||||
import android.view.View
|
||||
import com.lukouguoji.gjj.R
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpManifestBinding
|
||||
import com.lukouguoji.module_base.adapter.setCommonAdapter
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.bean.GjjManifest
|
||||
import com.lukouguoji.module_base.ktx.refresh
|
||||
|
||||
/**
|
||||
* 国际进港舱单 ViewHolder
|
||||
@@ -17,10 +20,14 @@ class IntImpManifestViewHolder(view: View) :
|
||||
binding.position = position
|
||||
binding.executePendingBindings()
|
||||
|
||||
// 选中图标点击 - 切换选择状态
|
||||
// 选中图标点击 - 切换选择状态(联动子列表)
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
val newCheckedState = !bean.checked.get()
|
||||
bean.checked.set(newCheckedState)
|
||||
// 联动子列表选中状态
|
||||
bean.haWbList?.forEach { sub -> sub.checked.set(newCheckedState) }
|
||||
binding.executePendingBindings()
|
||||
binding.rvSub.adapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
// 编辑按钮点击
|
||||
@@ -32,5 +39,21 @@ class IntImpManifestViewHolder(view: View) :
|
||||
binding.btnDelete.setOnClickListener {
|
||||
clickListener?.onItemClick(position, 102) // 102=删除
|
||||
}
|
||||
|
||||
// 展开按钮点击事件
|
||||
binding.ivShow.setOnClickListener {
|
||||
bean.showMore.set(!bean.showMore.get())
|
||||
}
|
||||
|
||||
// 初始化分单子列表 RecyclerView
|
||||
setCommonAdapter(
|
||||
binding.rvSub,
|
||||
IntImpManifestSubViewHolder::class.java,
|
||||
R.layout.item_int_imp_manifest_sub
|
||||
)
|
||||
|
||||
// 设置父Bean引用(用于子列表反向联动)
|
||||
binding.rvSub.tag = bean
|
||||
binding.rvSub.refresh(bean.haWbList ?: emptyList())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user