单击CheckBox时更新RecyclerView数据

问题描述

我想在CheckBox上实现RecyclerView.Adapter,但是我不知道从哪里开始,我以前从{上与CheckBox相关的几篇文章中阅读了参考文献{1}},但没有符合我问题的文章

我从这样的API得到响应:

RecyclerView

如果{ "results": [ { "isNameChecked": false,"name": "Data A","data": [ { "isChecked": false,"id": "A1","name": "Data 1" },{ "isChecked": true,"id": "A2","name": "Data 2" } ] },{ "isNameChecked": true,"name": "Data B","data": [ { "isChecked": true,"id": "B1","id": "B2","name": "Data 2" },"id": "B3","name": "Data 2" } ] } ] } 全部CheckBox,则将设置所有现有true CheckBoxtrue和{{ 1}}),如果isNameChecked true ,则保存isCheckedidA1A2等) >从B2到变量

When CheckBox All is true

否则,如果id框为 false ,但data设置为 true ,则结果中的All将更新isNameChecked true

When CheckBox All is false

解决方法

我不知道您如何显示复选框,但是适配器应该在其中存储所有项目的数据,而其中一部分数据是是否选中了该项目。我认为您有两种方法:

  • 使All复选框设置/取消其所有子项的选中状态(即遍历列表,映射或其他内容并更改所有值),然后调用notifyDataSetChanged()(或其他notify方法),以便显示更新

  • 不要更改子级的已检查状态(因此,如果取消选中All,其他子级则“记住”是否已选中),只需决定是否应该显示根据顶级框的选中状态

在适配器的onBindViewHolder方法中(设置项目的显示,包括是否显示为选中状态),您可以找到父复选框,如果选中,则可以将子项显示为选中状态太。否则,请显示其实际状态(数据中设置的实际值)。

这只是基本概念,您必须弄清楚如何使其与实际工作相适应,以及如何在数据中表示该层次结构,但这是您可以采用的一种方法! / p>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...