布尔值isChecked不随foreach更改

问题描述

因此,我尝试使用名为全选的按钮从列表中选择所有项目,现在我按该按钮,然后将所有字段的 isChecked 变量更新为没错,在我notifysetDataChange()之后,再次绘制了所有项目并检查了我,我还使用了一个界面,将选择了所有成员的当前成员列表通知我的UI

现在,当我按下按钮时

 binding.btnSelectAll.setonClickListener {
           attendanceAdapter.checkAllFields()
        }

并在适配器中更新我的列表

 fun checkAllFields(){
        memberList.forEach { it.isChecked == true }
        itemClickListener.onAllSelectedMembers(memberList)
        notifyDataSetChanged()
    }

所有memberList isChecked 值保持为 false 且未更改,我真的不知道为什么不更改,Members的数据类具有可变的isChecked变量,该变量可以是重新分配并且memberList也是可以更改的可变列表,为什么会发生这种情况?

解决方法

在您为checkAllFields()共享的代码段中,您正在做boolean operation ==。您应该执行分配操作。 在线附近:memberList.forEach { it.isChecked = true }

所以您的代码应如下所示:

fun checkAllFields(){
        memberList.forEach { it.isChecked = true }
        itemClickListener.onAllSelectedMembers(memberList)
        notifyDataSetChanged()
    }