布尔值 isChecked 不随 foreach 变化

Posted

技术标签:

【中文标题】布尔值 isChecked 不随 foreach 变化【英文标题】:Boolean value isChecked not changing with foreach 【发布时间】:2021-02-03 10:36:05 【问题描述】:

所以我尝试使用名为 select all 的按钮从列表中选择所有项目,现在我按下按钮,我所做的是将所有字段的 isChecked 变量更新为是的,在那之后我notifysetDataChange()所以所有的项目都被再次绘制并为我检查,我还使用一个界面来通知我的用户界面当前的成员列表,所有成员都被选中

现在,当我按下按钮时

 binding.btnSelectAll.setOnClickListener 
           attendanceAdapter.checkAllFields()
        

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

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

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

【问题讨论】:

【参考方案1】:

在您为checkAllFields() 共享的代码sn-p 中,您正在执行boolean operation ==。您应该改为执行分配操作。 近线:memberList.forEach it.isChecked = true

所以你的代码应该是这样的:

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

【讨论】:

哎呀,我漏掉了

以上是关于布尔值 isChecked 不随 foreach 变化的主要内容,如果未能解决你的问题,请参考以下文章

在视图中按布尔值过滤 Foreach

SwiftUI:ForEach 过滤器布尔值

WPF Radiobutton(二)(绑定到布尔值)

WPF Radiobutton Group - 绑定到布尔值

使用 Lambda 和 forEach 在集合中查找对象并触发布尔值 [重复]

如果文档存在,则在 foreach 循环中设置布尔值