问题描述
我想在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
CheckBox
(true
和{{ 1}}),如果isNameChecked
为 true ,则保存isChecked
(id
,A1
,A2
等) >从B2
到变量
否则,如果id
框为 false ,但data
设置为 true ,则结果中的All
将更新isNameChecked
为 true
解决方法
我不知道您如何显示复选框,但是适配器应该在其中存储所有项目的数据,而其中一部分数据是是否选中了该项目。我认为您有两种方法:
-
使
All
复选框设置/取消其所有子项的选中状态(即遍历列表,映射或其他内容并更改所有值),然后调用notifyDataSetChanged()
(或其他notify
方法),以便显示更新 -
不要更改子级的已检查状态(因此,如果取消选中
All
,其他子级则“记住”是否已选中),只需决定是否应该显示根据顶级框的选中状态
在适配器的onBindViewHolder
方法中(设置项目的显示,包括是否显示为选中状态),您可以找到父复选框,如果选中,则可以将子项显示为选中状态太。否则,请显示其实际状态(数据中设置的实际值)。
这只是基本概念,您必须弄清楚如何使其与实际工作相适应,以及如何在数据中表示该层次结构,但这是您可以采用的一种方法! / p>