package com.lukouguoji.gjc.holder

import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.lukouguoji.gjc.databinding.ItemIntExpStorageUseSubBinding
import com.lukouguoji.module_base.base.BaseViewHolder
import com.lukouguoji.module_base.bean.GjcMaWb
import com.lukouguoji.module_base.bean.GjcStorageUse

/**
 * 国际出港-仓库 库位明细行 ViewHolder
 */
class IntExpStorageUseSubViewHolder(view: View) :
    BaseViewHolder<GjcStorageUse, ItemIntExpStorageUseSubBinding>(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()

            // 反向联动主列表项（仅在勾选时联动）
            updateParentCheckState(newCheckedState)
        }
    }

    /**
     * 更新父列表项的选择状态
     * 规则：
     * - 如果子项被勾选（newCheckedState = true），则自动勾选父项
     * - 如果子项被取消勾选（newCheckedState = false），则不改变父项状态
     */
    private fun updateParentCheckState(newCheckedState: Boolean) {
        // 从RecyclerView的tag获取父Bean引用
        val recyclerView = itemView.parent as? RecyclerView ?: return
        val parentBean = recyclerView.tag as? GjcMaWb ?: return

        // 只有当子项被勾选时，才联动勾选父项
        if (newCheckedState) {
            parentBean.checked.set(true)
        }
        // 当子项被取消勾选时，不影响父项状态
    }
}
