feat: 国际出港/进港全选按钮新增图标切换与反向同步
- 全选/未选图标替换为新的 vector drawable,抽出 setIVCheckAllImage BindingAdapter 集中管理 - 列表项取消选中或上拉加载新数据后,左下角全选按钮自动反向同步 - 修复 isAllChecked.observeForever 反模式:导致取消单项时全部被取消、单项点击无响应 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -368,9 +368,9 @@ class GjjCangDanListActivity : BaseActivity(), View.OnClickListener {
|
||||
.navigation(this, Constant.RequestCode.gjj_cang_dan_list)
|
||||
}
|
||||
R.id.checkIcon -> {
|
||||
//重置 isAllCheck
|
||||
isAllCheck = !isAllCheck
|
||||
resetSelCount(isAllCheck)
|
||||
checkIcon.setImageResource(if (isAllCheck) R.drawable.img_check_all_checked else R.drawable.img_check_all_unchecked)
|
||||
}
|
||||
R.id.send -> {
|
||||
val ids = collectList.filter { c -> c.isCheck }.map { c -> c.id.toInt() }
|
||||
|
||||
@@ -436,7 +436,7 @@ class GjjChuKuListActivity : BaseActivity(), View.OnClickListener {
|
||||
} else {
|
||||
viewModel.setCheckCount(0)
|
||||
}
|
||||
//重置 isAllCheck
|
||||
checkIcon.setImageResource(if (isAllCheck) R.drawable.img_check_all_checked else R.drawable.img_check_all_unchecked)
|
||||
isAllCheck = !isAllCheck
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
@@ -29,11 +29,6 @@ class IntArrAirManifestActivity :
|
||||
setBackArrow("国际进港原始舱单")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -41,6 +36,8 @@ class IntArrAirManifestActivity :
|
||||
binding.rv.addOnItemClickListener(viewModel)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -33,14 +33,12 @@ class IntImpAccidentVisaActivity :
|
||||
setBackArrow("国际事故签证")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
binding.rv.addOnItemClickListener(this)
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -35,11 +35,6 @@ class IntImpLoadingListActivity :
|
||||
binding.viewModel = viewModel
|
||||
binding.activity = this
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -47,6 +42,8 @@ class IntImpLoadingListActivity :
|
||||
binding.rv.addOnItemClickListener(viewModel)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -29,11 +29,6 @@ class IntImpManifestActivity :
|
||||
setBackArrow("国际进港舱单")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -41,6 +36,8 @@ class IntImpManifestActivity :
|
||||
binding.rv.addOnItemClickListener(viewModel)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -28,11 +28,6 @@ class IntImpMsgParseActivity :
|
||||
setBackArrow("电报生成")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -40,6 +35,8 @@ class IntImpMsgParseActivity :
|
||||
binding.rv.addOnItemClickListener(viewModel)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -28,15 +28,12 @@ class IntImpPickUpDLVActivity :
|
||||
setBackArrow("国际进港出库")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -35,11 +35,6 @@ class IntImpPickUpRecordActivity :
|
||||
binding.viewModel = viewModel
|
||||
binding.activity = this
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -58,6 +53,8 @@ class IntImpPickUpRecordActivity :
|
||||
})
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -35,15 +35,12 @@ class IntImpStorageUseActivity :
|
||||
binding.viewModel = viewModel
|
||||
binding.activity = this
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -29,11 +29,6 @@ class IntImpTallyActivity :
|
||||
setBackArrow("国际进港理货报告")
|
||||
binding.viewModel = viewModel
|
||||
|
||||
// 观察全选状态,更新图标透明度
|
||||
viewModel.isAllChecked.observe(this) { isAllChecked ->
|
||||
binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f
|
||||
}
|
||||
|
||||
// 绑定分页
|
||||
viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)
|
||||
|
||||
@@ -41,6 +36,8 @@ class IntImpTallyActivity :
|
||||
binding.rv.addOnItemClickListener(viewModel)
|
||||
|
||||
// 监听刷新事件
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }
|
||||
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
|
||||
viewModel.refresh()
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.lukouguoji.gjj.R
|
||||
import com.lukouguoji.gjj.databinding.ItemIntArrAirManifestBinding
|
||||
import com.lukouguoji.module_base.adapter.setCommonAdapter
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.GjjAirManifest
|
||||
import com.lukouguoji.module_base.ktx.refresh
|
||||
|
||||
@@ -29,6 +31,7 @@ class IntArrAirManifestViewHolder(view: View) :
|
||||
// 图标点击 - 切换选择状态(独立选择,不联动子列表)
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.lukouguoji.gjj.holder
|
||||
import android.view.View
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpAccidentVisaBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.IntImpAccidentVisaBean
|
||||
|
||||
/**
|
||||
@@ -19,6 +21,7 @@ class IntImpAccidentVisaViewHolder(view: View) :
|
||||
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.lukouguoji.gjj.holder
|
||||
import android.view.View
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpLoadingListBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.GjjManifest
|
||||
|
||||
/**
|
||||
@@ -20,6 +22,7 @@ class IntImpLoadingListViewHolder(view: View) :
|
||||
// 添加图标点击事件 - 切换选择状态
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ 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.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.GjjManifest
|
||||
import com.lukouguoji.module_base.ktx.refresh
|
||||
|
||||
@@ -25,6 +27,7 @@ class IntImpManifestViewHolder(view: View) :
|
||||
binding.ivIcon.setOnClickListener {
|
||||
val newCheckedState = !bean.checked.get()
|
||||
bean.checked.set(newCheckedState)
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.lukouguoji.gjj.holder
|
||||
import android.view.View
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpMsgParseBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.MsgReceivePool
|
||||
|
||||
class IntImpMsgParseViewHolder(view: View) :
|
||||
@@ -20,6 +22,7 @@ class IntImpMsgParseViewHolder(view: View) :
|
||||
// 选择框点击 - 切换选择状态(拦截,不触发卡片点击)
|
||||
binding.ivCheck.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.lukouguoji.gjj.holder
|
||||
import android.view.View
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpPickUpDlvBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.IntImpPickUpDLVBean
|
||||
|
||||
/**
|
||||
@@ -20,6 +22,7 @@ class IntImpPickUpDLVViewHolder(view: View) :
|
||||
// 点击图标切换选中状态
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import android.view.View
|
||||
import com.lukouguoji.gjj.activity.IntImpPickUpRecordDetailsActivity
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpPickUpRecordBinding
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.IntImpPickUpRecordBean
|
||||
|
||||
/**
|
||||
@@ -21,6 +23,7 @@ class IntImpPickUpRecordViewHolder(view: View) :
|
||||
// 图标点击切换选择状态
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.lukouguoji.gjj.R
|
||||
import com.lukouguoji.gjj.databinding.ItemIntImpStorageUseBinding
|
||||
import com.lukouguoji.module_base.adapter.setCommonAdapter
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.GjcMaWb
|
||||
import com.lukouguoji.module_base.ktx.refresh
|
||||
|
||||
@@ -23,6 +25,7 @@ class IntImpStorageUseViewHolder(view: View) :
|
||||
// 图标点击切换选择状态
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.lukouguoji.gjj.databinding.ItemIntImpTallyBinding
|
||||
import com.lukouguoji.gjj.activity.IntImpTallyDetailsActivity
|
||||
import com.lukouguoji.module_base.adapter.setCommonAdapter
|
||||
import com.lukouguoji.module_base.base.BaseViewHolder
|
||||
import com.lukouguoji.module_base.common.ConstantEvent
|
||||
import com.lukouguoji.module_base.impl.FlowBus
|
||||
import com.lukouguoji.module_base.bean.GjjImportTally
|
||||
import com.google.gson.Gson
|
||||
import com.lukouguoji.module_base.http.net.NetApply
|
||||
@@ -28,6 +30,7 @@ class IntImpTallyViewHolder(view: View) :
|
||||
// 选中图标点击 - 切换选择状态(独立选择,不联动分单)
|
||||
binding.ivIcon.setOnClickListener {
|
||||
bean.checked.set(!bean.checked.get())
|
||||
FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")
|
||||
binding.executePendingBindings()
|
||||
}
|
||||
|
||||
|
||||
@@ -41,22 +41,19 @@ class IntArrAirManifestViewModel : BasePageViewModel() {
|
||||
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjAirManifest> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 全部展开状态 ==========
|
||||
val isAllExpanded = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
// 监听全选状态,自动更新所有列表项(含子列表)
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjAirManifest> ?: return@observeForever
|
||||
list.forEach {
|
||||
it.checked.set(checked)
|
||||
it.haWbList?.forEach { sub -> sub.checked.set(checked) }
|
||||
}
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
val itemViewHolder = IntArrAirManifestViewHolder::class.java
|
||||
val itemLayoutId = R.layout.item_int_arr_air_manifest
|
||||
@@ -267,7 +264,7 @@ class IntArrAirManifestViewModel : BasePageViewModel() {
|
||||
if (it.fno.isEmpty()) it.fno = fn
|
||||
}
|
||||
}
|
||||
pageModel.handleListBean(result.toBaseListBean())
|
||||
pageModel.handleListBean(result.toBaseListBean()) { updateCheckAllStatus() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,13 +45,13 @@ class IntImpAccidentVisaViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpAccidentVisaBean>
|
||||
?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpAccidentVisaBean> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
@@ -188,7 +188,7 @@ class IntImpAccidentVisaViewModel : BasePageViewModel() {
|
||||
|
||||
launchLoadingCollect({ NetApply.api.getIntImpAccidentVisaList(listParams) }) {
|
||||
onSuccess = { pageInfo ->
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean())
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean()) { updateCheckAllStatus() }
|
||||
totalCount.value = (pageInfo.total ?: 0).toString()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,15 +109,15 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener {
|
||||
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
// 监听全选状态,自动更新所有列表项
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjManifest> ?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjManifest> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
val itemViewHolder = IntImpLoadingListViewHolder::class.java
|
||||
@@ -317,7 +317,7 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener {
|
||||
// 获取列表(带Loading)
|
||||
launchLoadingCollect({ NetApply.api.getIntImpLoadingList(listParams) }) {
|
||||
onSuccess = { result ->
|
||||
pageModel.handleListBean(result.toBaseListBean())
|
||||
pageModel.handleListBean(result.toBaseListBean()) { updateCheckAllStatus() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,6 +125,15 @@ class IntImpManifestViewModel : BasePageViewModel() {
|
||||
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjManifest> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 展开/收起 ==========
|
||||
val isAllExpanded = MutableLiveData(false)
|
||||
@@ -528,7 +537,7 @@ class IntImpManifestViewModel : BasePageViewModel() {
|
||||
// 获取列表(带Loading)
|
||||
launchLoadingCollect({ NetApply.api.getIntImpManifestList(listParams) }) {
|
||||
onSuccess = { result ->
|
||||
pageModel.handleListBean(result.toBaseListBean())
|
||||
pageModel.handleListBean(result.toBaseListBean()) { updateCheckAllStatus() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,15 @@ class IntImpMsgParseViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<MsgReceivePool> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
init {
|
||||
// 初始化报文类型静态数据
|
||||
msgTypeList.value = listOf(
|
||||
@@ -53,12 +62,6 @@ class IntImpMsgParseViewModel : BasePageViewModel() {
|
||||
KeyValue("FWB/FHL", "FWB/FHL")
|
||||
)
|
||||
|
||||
// 监听全选状态,自动更新所有列表项
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<MsgReceivePool> ?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 航班级联查询 ==========
|
||||
@@ -211,7 +214,7 @@ class IntImpMsgParseViewModel : BasePageViewModel() {
|
||||
// 获取列表(带Loading)
|
||||
launchLoadingCollect({ NetApply.api.getIntImpMsgList(listParams) }) {
|
||||
onSuccess = { pageInfo ->
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean())
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean()) { updateCheckAllStatus() }
|
||||
totalCount.value = (pageInfo.total ?: 0).toString()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,13 +47,13 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpPickUpDLVBean>
|
||||
?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpPickUpDLVBean> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
@@ -156,7 +156,7 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() {
|
||||
|
||||
launchLoadingCollect({ NetApply.api.getIntImpPickUpDLVList(listParams) }) {
|
||||
onSuccess = { result ->
|
||||
pageModel.handleDataList(result.list)
|
||||
pageModel.handleDataList(result.list) { updateCheckAllStatus() }
|
||||
pageModel.haveMore.postValue((result.pages) > pageModel.page)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,13 +49,13 @@ class IntImpPickUpRecordViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpPickUpRecordBean>
|
||||
?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<IntImpPickUpRecordBean> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
@@ -162,7 +162,7 @@ class IntImpPickUpRecordViewModel : BasePageViewModel() {
|
||||
|
||||
launchLoadingCollect({ NetApply.api.getIntImpPickUpRecordList(listParams) }) {
|
||||
onSuccess = { result ->
|
||||
pageModel.handleDataList(result.list)
|
||||
pageModel.handleDataList(result.list) { updateCheckAllStatus() }
|
||||
pageModel.haveMore.postValue((result.pages) > pageModel.page)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,15 @@ class IntImpStorageUseViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 全局展开状态 ==========
|
||||
val isAllExpanded = MutableLiveData(false)
|
||||
|
||||
@@ -54,12 +63,6 @@ class IntImpStorageUseViewModel : BasePageViewModel() {
|
||||
KeyValue("异常", "1")
|
||||
)
|
||||
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list =
|
||||
pageModel.rv?.commonAdapter()?.items as? List<GjcMaWb> ?: return@observeForever
|
||||
list.forEach { it.checked.set(checked) }
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
@@ -268,7 +271,7 @@ class IntImpStorageUseViewModel : BasePageViewModel() {
|
||||
|
||||
launchLoadingCollect({ NetApply.api.getIntImpStorageUseList(listParams) }) {
|
||||
onSuccess = { result ->
|
||||
pageModel.handleDataList(result.list)
|
||||
pageModel.handleDataList(result.list) { updateCheckAllStatus() }
|
||||
pageModel.haveMore.postValue((result.pages) > pageModel.page)
|
||||
isAllExpanded.value = false
|
||||
}
|
||||
|
||||
@@ -42,16 +42,13 @@ class IntImpTallyViewModel : BasePageViewModel() {
|
||||
// ========== 全选状态 ==========
|
||||
val isAllChecked = MutableLiveData(false)
|
||||
|
||||
init {
|
||||
// 监听全选状态,自动更新所有列表项(主单和分单独立全选)
|
||||
isAllChecked.observeForever { checked ->
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjImportTally> ?: return@observeForever
|
||||
list.forEach {
|
||||
it.checked.set(checked)
|
||||
it.haWbList?.forEach { sub -> sub.checked.set(checked) }
|
||||
}
|
||||
pageModel.rv?.commonAdapter()?.notifyDataSetChanged()
|
||||
}
|
||||
fun onItemCheckChanged() {
|
||||
updateCheckAllStatus()
|
||||
}
|
||||
|
||||
fun updateCheckAllStatus() {
|
||||
val list = pageModel.rv?.commonAdapter()?.items as? List<GjjImportTally> ?: return
|
||||
isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() }
|
||||
}
|
||||
|
||||
// ========== 适配器配置 ==========
|
||||
@@ -278,7 +275,7 @@ class IntImpTallyViewModel : BasePageViewModel() {
|
||||
}) {
|
||||
onSuccess = { pageInfo ->
|
||||
// ⚠️ 核心:使用toBaseListBean()转换PageInfo为BaseListBean
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean())
|
||||
pageModel.handleListBean(pageInfo.toBaseListBean()) { updateCheckAllStatus() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginLeft="2dp"
|
||||
android:src="@mipmap/img_all_check" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
|
||||
@@ -263,9 +263,9 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/img_all_check" />
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:onClick="@{viewModel::onAllClick}"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:onClick="@{viewModel::selectAllClick}"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:onClick="@{viewModel::onAllClick}"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
@@ -145,10 +145,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -158,10 +158,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -155,10 +155,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -194,10 +194,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -143,10 +143,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -139,10 +139,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -143,10 +143,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -162,10 +162,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -137,10 +137,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkIcon"
|
||||
setIVCheckAllImage="@{viewModel.isAllChecked}"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:src="@drawable/img_check_all" />
|
||||
android:src="@drawable/img_check_all_unchecked" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
Reference in New Issue
Block a user