diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e867d01..ec7ec66 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -140,7 +140,14 @@ "Bash(cp \"/Users/kid/Downloads/Desktop/原始舱单.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_yuan_shi_cang_dan_icon.png)", "Bash(cp \"/Users/kid/Downloads/Desktop/提取记录.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_ti_qu_ji_lu_icon.png)", "mcp__api-doc__get_project_overview", - "mcp__plugin_claude-mem_mcp-search__get_observations" + "mcp__plugin_claude-mem_mcp-search__get_observations", + "Bash(awk *)", + "Bash(sed -n '65,90p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt)", + "Bash(sed -n '73,95p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt)", + "Bash(sed -n '60,75p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt)", + "Bash(sed -n '73,100p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt)", + "Bash(sed -n '82,115p' module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt)", + "Bash(sed -n '212,240p' module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt)" ], "deny": [], "ask": [] diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ktx/ImageViewAdapter.kt b/module_base/src/main/java/com/lukouguoji/module_base/ktx/ImageViewAdapter.kt index 2b5af4a..c03874b 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/ktx/ImageViewAdapter.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/ktx/ImageViewAdapter.kt @@ -9,4 +9,11 @@ fun setIVCheckImage(imageView: ImageView, isChecked: Boolean) { imageView.setImageResource( if (isChecked) R.drawable.img_p_check_s else R.drawable.img_p_check_n ) +} + +@BindingAdapter("setIVCheckAllImage") +fun setIVCheckAllImage(imageView: ImageView, isChecked: Boolean) { + imageView.setImageResource( + if (isChecked) R.drawable.img_check_all_checked else R.drawable.img_check_all_unchecked + ) } \ No newline at end of file diff --git a/module_base/src/main/java/com/lukouguoji/module_base/model/PageModel.kt b/module_base/src/main/java/com/lukouguoji/module_base/model/PageModel.kt index bc033c6..5298197 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/model/PageModel.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/model/PageModel.kt @@ -117,9 +117,11 @@ class PageModel { } /** - * 处理列表数据 + * 处理列表数据。 + * onDataApplied 在 adapter.items 真正更新后回调(refresh/loadMore 都用 post 异步派发到 adapter, + * 这里再嵌套一层 post 确保排在内部 post 之后)。 */ - fun handleDataList(list: List?) { + fun handleDataList(list: List?, onDataApplied: (() -> Unit)? = null) { rv?.let { it.post { if (isRefresh()) { @@ -127,6 +129,9 @@ class PageModel { } else { it.loadMore(list) } + if (onDataApplied != null) { + it.post { onDataApplied() } + } } } // 关闭加载状态 @@ -136,9 +141,9 @@ class PageModel { /** * 处理listBean数据 */ - fun handleListBean(listBean: BaseListBean<*>?) { + fun handleListBean(listBean: BaseListBean<*>?, onDataApplied: (() -> Unit)? = null) { loge("rv:${rv}") - handleDataList(listBean?.list) + handleDataList(listBean?.list, onDataApplied) haveMore.postValue((listBean?.pages ?: 1) > page) } diff --git a/module_base/src/main/res/drawable/img_check_all_checked.xml b/module_base/src/main/res/drawable/img_check_all_checked.xml new file mode 100644 index 0000000..7584e78 --- /dev/null +++ b/module_base/src/main/res/drawable/img_check_all_checked.xml @@ -0,0 +1,10 @@ + + + diff --git a/module_base/src/main/res/drawable/img_check_all_unchecked.xml b/module_base/src/main/res/drawable/img_check_all_unchecked.xml new file mode 100644 index 0000000..f222bc0 --- /dev/null +++ b/module_base/src/main/res/drawable/img_check_all_unchecked.xml @@ -0,0 +1,9 @@ + + + diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcAssembleAllocateActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcAssembleAllocateActivity.kt index a2aa49c..a3fc731 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcAssembleAllocateActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcAssembleAllocateActivity.kt @@ -46,12 +46,6 @@ class GjcAssembleAllocateActivity : viewModel.onItemCheckChanged() } - // 监听全选状态变化,更新图标 - viewModel.isAllChecked.observe(this) { isAllChecked -> - // 通过alpha值表示全选状态:全选时alpha=1.0,未全选时alpha=0.5 - binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f - } - // 初始化:获取分配人列表 viewModel.getAssembleCompanyList() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcInspectionActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcInspectionActivity.kt index 8cea8ea..71ba346 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcInspectionActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcInspectionActivity.kt @@ -46,12 +46,6 @@ class GjcInspectionActivity : viewModel.onItemCheckChanged() } - // 监听全选状态变化,更新图标 - viewModel.isAllChecked.observe(this) { isAllChecked -> - // 通过alpha值表示全选状态:全选时alpha=1.0,未全选时alpha=0.5 - binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f - } - // 初始化代理列表 viewModel.initAgentList() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcWeighingListActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcWeighingListActivity.kt index 8e53091..6bddb10 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcWeighingListActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcWeighingListActivity.kt @@ -30,11 +30,6 @@ class GjcWeighingListActivity : binding.viewModel = viewModel - // 观察全选状态,更新图标透明度 - viewModel.isAllChecked.observe(this) { isAllChecked -> - binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f - } - // 初始化代理人列表(从API获取) viewModel.initAgentList() @@ -46,6 +41,8 @@ class GjcWeighingListActivity : .bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, getLifecycleOwner()) // 监听刷新事件 + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH) .observe(this) { viewModel.refresh() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpArriveActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpArriveActivity.kt index 7bfc42e..e801d3f 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpArriveActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpArriveActivity.kt @@ -44,11 +44,6 @@ class IntExpArriveActivity : viewModel.searchClick() } - // 观察全选状态,更新图标透明度 - viewModel.isAllChecked.observe(this) { isAllChecked -> - binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f - } - // 绑定分页 viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this) @@ -56,6 +51,8 @@ class IntExpArriveActivity : binding.rv.addOnItemClickListener(viewModel) // 监听刷新事件 + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpLoadActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpLoadActivity.kt index 7c16be6..c04c7d1 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpLoadActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpLoadActivity.kt @@ -29,11 +29,6 @@ class IntExpLoadActivity : 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 IntExpLoadActivity : binding.rv.addOnItemClickListener(viewModel) // 监听刷新事件 + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpOutHandoverActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpOutHandoverActivity.kt index 83b32fb..bc8cba2 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpOutHandoverActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpOutHandoverActivity.kt @@ -29,11 +29,6 @@ class IntExpOutHandoverActivity : 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 IntExpOutHandoverActivity : binding.rv.addOnItemClickListener(viewModel) // 监听刷新事件 + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt index d726f68..34d286a 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpStorageUseActivity.kt @@ -35,15 +35,12 @@ class IntExpStorageUseActivity : 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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpTallyActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpTallyActivity.kt index a5bbd45..ed35f74 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpTallyActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/IntExpTallyActivity.kt @@ -29,11 +29,6 @@ class IntExpTallyActivity : 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 IntExpTallyActivity : binding.rv.addOnItemClickListener(viewModel) // 监听刷新事件 + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/fragment/GjcYiKuFragment.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/fragment/GjcYiKuFragment.kt index d109462..424f356 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/fragment/GjcYiKuFragment.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/fragment/GjcYiKuFragment.kt @@ -358,9 +358,9 @@ class GjcYiKuFragment : Fragment(), View.OnClickListener { scanCode(Constant.RequestCode.gjc_yiku_wb_no_scan) } R.id.checkIcon -> { - //重置 isAllCheck isAllCheck = !isAllCheck resetSelCount(isAllCheck, totalCount) + 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 } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcWeighingViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcWeighingViewHolder.kt index 6d4b926..54e8513 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcWeighingViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcWeighingViewHolder.kt @@ -4,6 +4,8 @@ import android.view.View import com.lukouguoji.gjc.activity.GjcWeighingStartActivity import com.lukouguoji.gjc.databinding.ItemGjcWeighingBinding 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.GjcWeighingBean /** @@ -22,6 +24,7 @@ class GjcWeighingViewHolder(view: View) : binding.ivIcon.setOnClickListener { // 反转checked状态 bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 立即更新UI (图片自动切换) binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt index e46dafc..4601769 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpArriveViewHolder.kt @@ -5,6 +5,8 @@ import com.lukouguoji.gjc.R import com.lukouguoji.gjc.databinding.ItemIntExpArriveBinding 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 @@ -24,6 +26,7 @@ class IntExpArriveViewHolder(view: View) : binding.ivIcon.setOnClickListener { // 反转checked状态 bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 立即更新UI(图片自动切换) binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt index 2e449b6..70394a7 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpLoadViewHolder.kt @@ -3,6 +3,8 @@ package com.lukouguoji.gjc.holder import android.view.View import com.lukouguoji.gjc.databinding.ItemIntExpLoadBinding 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.GjcExportLoad /** @@ -21,6 +23,7 @@ class IntExpLoadViewHolder(view: View) : binding.ivIcon.setOnClickListener { // 反转checked状态 bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 立即更新UI (图片自动切换) binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpOutHandoverViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpOutHandoverViewHolder.kt index a2e1bf6..66b86bd 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpOutHandoverViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpOutHandoverViewHolder.kt @@ -3,6 +3,8 @@ package com.lukouguoji.gjc.holder import android.view.View import com.lukouguoji.gjc.databinding.ItemIntExpOutHandoverBinding 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.GjcUldUseBean /** @@ -21,6 +23,7 @@ class IntExpOutHandoverViewHolder(view: View) : binding.ivIcon.setOnClickListener { // 反转checked状态 bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 立即更新UI(图片自动切换) binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpStorageUseViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpStorageUseViewHolder.kt index afa0696..7013a5a 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpStorageUseViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpStorageUseViewHolder.kt @@ -5,6 +5,8 @@ import com.lukouguoji.gjc.R import com.lukouguoji.gjc.databinding.ItemIntExpStorageUseBinding 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 @@ -25,10 +27,12 @@ class IntExpStorageUseViewHolder(view: View) : // 切换主列表项的选择状态 val newCheckedState = !bean.checked.get() bean.checked.set(newCheckedState) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 联动勾选/取消所有子列表项 bean.storageUseList?.forEach { storageUse -> storageUse.checked.set(newCheckedState) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") } // 刷新UI diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt index ca4f8ad..b4e2368 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt @@ -5,6 +5,8 @@ import com.lukouguoji.gjc.R import com.lukouguoji.gjc.databinding.ItemIntExpTallyBinding 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 @@ -24,6 +26,7 @@ class IntExpTallyViewHolder(view: View) : binding.ivIcon.setOnClickListener { // 只切换主单自己的选择状态,不同步到分单 bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") // 刷新UI binding.executePendingBindings() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt index 1a918b3..797d327 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/page/move/IntExpMoveActivity.kt @@ -65,11 +65,6 @@ class IntExpMoveActivity : BaseBindingActivity - binding.checkIcon.alpha = if (isAllChecked) 1.0f else 0.5f - } - // 监听item选择变化事件,更新全选状态 FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcAssembleAllocateViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcAssembleAllocateViewModel.kt index 90874c1..65f9ffe 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcAssembleAllocateViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcAssembleAllocateViewModel.kt @@ -22,7 +22,7 @@ import com.lukouguoji.module_base.ktx.toRequestBody import com.lukouguoji.module_base.util.CheckUtil import dev.utils.app.info.KeyValue import dev.utils.common.DateUtils -import com.lukouguoji.module_base.ktx.formatDate +import com.lukouguoji.module_base.ktx.formatDate import kotlinx.coroutines.launch /** @@ -91,8 +91,7 @@ class GjcAssembleAllocateViewModel : BasePageViewModel() { NetApply.api.getGjcAssembleAllocateList(listParams) }) { onSuccess = { pageInfo -> - // 直接转换为 BaseListBean - pageModel.handleListBean(pageInfo.toBaseListBean()) + pageModel.handleListBean(pageInfo.toBaseListBean()) { updateCheckAllStatus() } } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt index c00f423..3cc6a7c 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt @@ -118,7 +118,7 @@ class GjcInspectionViewModel : BasePageViewModel() { NetApply.api.getGjcInspectionList(listParams) }) { onSuccess = { - pageModel.handleListBean(it) + pageModel.handleListBean(it) { updateCheckAllStatus() } } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingViewModel.kt index 9dd36b9..0559c43 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingViewModel.kt @@ -55,15 +55,15 @@ class GjcWeighingViewModel : BasePageViewModel() { // 全选状态 val isAllChecked = MutableLiveData(false) - - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + } /////////////////////////////////////////////////////////////////////////// // 方法区 @@ -210,7 +210,7 @@ class GjcWeighingViewModel : BasePageViewModel() { NetApply.api.getGjcWeighingList(listParams) }) { onSuccess = { - pageModel.handleListBean(it) + pageModel.handleListBean(it) { updateCheckAllStatus() } } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt index cf1b5c9..b60990c 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt @@ -43,6 +43,15 @@ class IntExpArriveViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + } + // ========== 全局展开状态 ========== /** * 全局展开状态 @@ -51,15 +60,6 @@ class IntExpArriveViewModel : BasePageViewModel() { */ val isAllExpanded = MutableLiveData(false) - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: return@observeForever - list.forEach { it.checked.set(checked) } - pageModel.rv?.commonAdapter()?.notifyDataSetChanged() - } - } - // ========== 适配器配置 ========== val itemViewHolder = IntExpArriveViewHolder::class.java val itemLayoutId = R.layout.item_int_exp_arrive @@ -312,7 +312,7 @@ class IntExpArriveViewModel : BasePageViewModel() { // 获取列表 (带Loading) launchLoadingCollect({ NetApply.api.getIntExpArriveList(listParams) }) { onSuccess = { - pageModel.handleListBean(it) + pageModel.handleListBean(it) { updateCheckAllStatus() } // 数据加载完成后,重置全局展开状态为收起 isAllExpanded.value = false } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt index 0683fa1..d4ce99a 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt @@ -43,13 +43,13 @@ class IntExpLoadViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } } // ========== 适配器配置 ========== @@ -215,7 +215,7 @@ class IntExpLoadViewModel : BasePageViewModel() { // 获取列表 (带Loading) launchLoadingCollect({ NetApply.api.getIntExpLoadList(listParams) }) { - onSuccess = { pageModel.handleListBean(it) } + onSuccess = { pageModel.handleListBean(it) { updateCheckAllStatus() } } } // 获取统计信息 (后台请求,不阻塞列表) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpMoveViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpMoveViewModel.kt index 441616e..cf9b62e 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpMoveViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpMoveViewModel.kt @@ -165,7 +165,9 @@ class IntExpMoveViewModel : BasePageViewModel(), IOnItemClickListener { // 获取列表(显示loading) launchLoadingCollect({ NetApply.api.getIntExpMoveList(listParams) }) { - onSuccess = { pageModel.handleListBean(it) } + onSuccess = { + pageModel.handleListBean(it) { updateCheckAllStatus() } + } } // 获取统计(后台调用) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt index 974e44f..c62d51f 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt @@ -39,15 +39,15 @@ class IntExpOutHandoverViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + } // ========== 适配器配置 ========== val itemViewHolder = IntExpOutHandoverViewHolder::class.java @@ -182,7 +182,7 @@ class IntExpOutHandoverViewModel : BasePageViewModel() { // 获取列表 (带Loading) launchLoadingCollect({ NetApply.api.getIntExpOutHandoverList(listParams) }) { - onSuccess = { pageModel.handleListBean(it) } + onSuccess = { pageModel.handleListBean(it) { updateCheckAllStatus() } } } // 获取统计信息 (后台请求) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt index d5ac607..2ad7613 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpStorageUseViewModel.kt @@ -43,6 +43,15 @@ class IntExpStorageUseViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + } + // ========== 全局展开状态 ========== /** * 全局展开状态 @@ -59,13 +68,6 @@ class IntExpStorageUseViewModel : BasePageViewModel() { KeyValue("异常", "1") ) - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = - pageModel.rv?.commonAdapter()?.items as? List ?: return@observeForever - list.forEach { it.checked.set(checked) } - pageModel.rv?.commonAdapter()?.notifyDataSetChanged() - } } // ========== 适配器配置 ========== @@ -322,7 +324,7 @@ class IntExpStorageUseViewModel : BasePageViewModel() { launchLoadingCollect({ NetApply.api.getIntExpStorageUseList(listParams) }) { onSuccess = { result -> // 手动处理 PageInfo 数据 - pageModel.handleDataList(result.list) + pageModel.handleDataList(result.list) { updateCheckAllStatus() } pageModel.haveMore.postValue((result.pages) > pageModel.page) // 数据加载完成后,重置全局展开状态为收起 isAllExpanded.value = false diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt index 3948e8b..4496c28 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt @@ -44,6 +44,15 @@ class IntExpTallyViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + } + // ========== 全局展开状态 ========== /** * 全局展开状态 @@ -52,15 +61,6 @@ class IntExpTallyViewModel : BasePageViewModel() { */ val isAllExpanded = MutableLiveData(false) - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: return@observeForever - list.forEach { it.checked.set(checked) } - pageModel.rv?.commonAdapter()?.notifyDataSetChanged() - } - } - // ========== 适配器配置 ========== val itemViewHolder = IntExpTallyViewHolder::class.java val itemLayoutId = R.layout.item_int_exp_tally @@ -316,7 +316,7 @@ class IntExpTallyViewModel : BasePageViewModel() { // 获取列表 (带Loading) launchLoadingCollect({ NetApply.api.getIntExpTallyList(listParams) }) { onSuccess = { - pageModel.handleListBean(it) + pageModel.handleListBean(it) { updateCheckAllStatus() } // 数据加载完成后,重置全局展开状态为收起 isAllExpanded.value = false } diff --git a/module_gjc/src/main/res/layout/activity_gjc_assemble_allocate.xml b/module_gjc/src/main/res/layout/activity_gjc_assemble_allocate.xml index 658c9a1..1459e0c 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_assemble_allocate.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_assemble_allocate.xml @@ -138,10 +138,11 @@ + android:src="@drawable/img_check_all_unchecked" /> diff --git a/module_gjc/src/main/res/layout/activity_gjc_inspection.xml b/module_gjc/src/main/res/layout/activity_gjc_inspection.xml index 48afb91..81460aa 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_inspection.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_inspection.xml @@ -148,10 +148,11 @@ + android:src="@drawable/img_check_all_unchecked" /> diff --git a/module_gjc/src/main/res/layout/activity_gjc_un_load_list.xml b/module_gjc/src/main/res/layout/activity_gjc_un_load_list.xml index ab97ca6..0e44316 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_un_load_list.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_un_load_list.xml @@ -150,7 +150,7 @@ android:layout_height="30dp" android:layout_marginLeft="5dp" android:onClick="@{viewModel::checkAllClick}" - android:src="@drawable/img_check_all" /> + android:src="@drawable/img_check_all_unchecked" /> diff --git a/module_gjc/src/main/res/layout/activity_gjc_weighing_list.xml b/module_gjc/src/main/res/layout/activity_gjc_weighing_list.xml index 8bcfffe..165cefc 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_weighing_list.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_weighing_list.xml @@ -149,9 +149,10 @@ + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> diff --git a/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml b/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml index 9c619a4..a78b0ba 100644 --- a/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml +++ b/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml @@ -130,10 +130,11 @@ + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> { - //重置 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() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjChuKuListActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjChuKuListActivity.kt index 1280629..44eb97b 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjChuKuListActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/GjjChuKuListActivity.kt @@ -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() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntArrAirManifestActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntArrAirManifestActivity.kt index ca52faf..44fb160 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntArrAirManifestActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntArrAirManifestActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaActivity.kt index d5a4e56..1f17579 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpAccidentVisaActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt index 9ecda89..c78cb6a 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt index 2aca114..1324794 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpMsgParseActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpMsgParseActivity.kt index 59a6257..26799cf 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpMsgParseActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpMsgParseActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpDLVActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpDLVActivity.kt index 62175f9..c8fe4e8 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpDLVActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpDLVActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpRecordActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpRecordActivity.kt index ace1f83..5c7a2b6 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpRecordActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpPickUpRecordActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpStorageUseActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpStorageUseActivity.kt index c2176c0..43c7c77 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpStorageUseActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpStorageUseActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpTallyActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpTallyActivity.kt index f396431..0abf440 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpTallyActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpTallyActivity.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() } + FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt index 4e42c71..9cbb6ea 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntArrAirManifestViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpAccidentVisaViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpAccidentVisaViewHolder.kt index 9a3501f..3dc0a63 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpAccidentVisaViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpAccidentVisaViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpLoadingListViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpLoadingListViewHolder.kt index bfbdfc6..45d5c17 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpLoadingListViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpLoadingListViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpManifestViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpManifestViewHolder.kt index c71a06b..b4f195d 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpManifestViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpManifestViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpMsgParseViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpMsgParseViewHolder.kt index a9b18d2..a170c84 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpMsgParseViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpMsgParseViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt index 8d4614f..3a28b70 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpRecordViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpRecordViewHolder.kt index cda8b59..392f979 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpRecordViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpRecordViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpStorageUseViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpStorageUseViewHolder.kt index 99f0848..fb7f5bd 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpStorageUseViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpStorageUseViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt index 34db89f..9a3414c 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpTallyViewHolder.kt @@ -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(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt index cc3ba05..636f39c 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntArrAirManifestViewModel.kt @@ -41,22 +41,19 @@ class IntArrAirManifestViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: 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() } } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaViewModel.kt index 7c45587..02ecb8d 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaViewModel.kt @@ -45,13 +45,13 @@ class IntImpAccidentVisaViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - init { - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List - ?: 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 ?: 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() } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt index b058221..c0e2253 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt @@ -109,15 +109,15 @@ class IntImpLoadingListViewModel : BasePageViewModel(), IOnItemClickListener { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - - init { - // 监听全选状态,自动更新所有列表项 - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: 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() } } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt index c4060cb..43e586d 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt @@ -125,6 +125,15 @@ class IntImpManifestViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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() } } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpMsgParseViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpMsgParseViewModel.kt index 3c7bed1..b0d088f 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpMsgParseViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpMsgParseViewModel.kt @@ -46,6 +46,15 @@ class IntImpMsgParseViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: 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() } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt index 51be351..5d049cd 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt @@ -47,13 +47,13 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - init { - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List - ?: 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 ?: 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) } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpRecordViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpRecordViewModel.kt index c27917f..90b2076 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpRecordViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpRecordViewModel.kt @@ -49,13 +49,13 @@ class IntImpPickUpRecordViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - init { - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List - ?: 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 ?: 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) } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpStorageUseViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpStorageUseViewModel.kt index cc720a3..87855c6 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpStorageUseViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpStorageUseViewModel.kt @@ -44,6 +44,15 @@ class IntImpStorageUseViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) + fun onItemCheckChanged() { + updateCheckAllStatus() + } + + fun updateCheckAllStatus() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: 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 } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt index 4b5fc9a..618cdf3 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpTallyViewModel.kt @@ -42,16 +42,13 @@ class IntImpTallyViewModel : BasePageViewModel() { // ========== 全选状态 ========== val isAllChecked = MutableLiveData(false) - init { - // 监听全选状态,自动更新所有列表项(主单和分单独立全选) - isAllChecked.observeForever { checked -> - val list = pageModel.rv?.commonAdapter()?.items as? List ?: 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 ?: 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() } } } diff --git a/module_gjj/src/main/res/layout/activity_gjj_cang_dan_list.xml b/module_gjj/src/main/res/layout/activity_gjj_cang_dan_list.xml index 929166c..6d29b27 100644 --- a/module_gjj/src/main/res/layout/activity_gjj_cang_dan_list.xml +++ b/module_gjj/src/main/res/layout/activity_gjj_cang_dan_list.xml @@ -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" /> + android:layout_width="30dp" + android:layout_height="30dp" + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> diff --git a/module_gjj/src/main/res/layout/activity_gjj_manifest.xml b/module_gjj/src/main/res/layout/activity_gjj_manifest.xml index 9dd4b34..1ea026d 100644 --- a/module_gjj/src/main/res/layout/activity_gjj_manifest.xml +++ b/module_gjj/src/main/res/layout/activity_gjj_manifest.xml @@ -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" /> diff --git a/module_gjj/src/main/res/layout/activity_gjj_tally_list.xml b/module_gjj/src/main/res/layout/activity_gjj_tally_list.xml index 2bbb8a4..9805dec 100644 --- a/module_gjj/src/main/res/layout/activity_gjj_tally_list.xml +++ b/module_gjj/src/main/res/layout/activity_gjj_tally_list.xml @@ -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" /> diff --git a/module_gjj/src/main/res/layout/activity_int_arr_air_manifest.xml b/module_gjj/src/main/res/layout/activity_int_arr_air_manifest.xml index 61489c0..4cafb8e 100644 --- a/module_gjj/src/main/res/layout/activity_int_arr_air_manifest.xml +++ b/module_gjj/src/main/res/layout/activity_int_arr_air_manifest.xml @@ -145,10 +145,11 @@ + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" /> + android:src="@drawable/img_check_all_unchecked" />