【问题标题】:Boolean value isChecked not changing with foreach布尔值 isChecked 不随 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也是一个可以更改的可变列表,为什么会发生这种情况?

【问题讨论】:

    标签: android listview kotlin android-listview


    【解决方案1】:

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

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

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

    【讨论】:

    • 哎呀,我漏掉了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多