单击 CheckBox 时更新 RecyclerView 数据
Updating RecyclerView Data when CheckBox is clicked
我想在 RecyclerView.Adapter
上实现 CheckBox
但我不知道从哪里开始,我以前阅读过几篇与 CheckBox
相关的文章的参考资料RecyclerView
但是没有符合我问题的文章。
我收到了 API 的回复:
{
"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",
"name": "Data 1"
},
{
"isChecked": true,
"id": "B2",
"name": "Data 2"
},
{
"isChecked": true,
"id": "B3",
"name": "Data 2"
}
]
}
]
}
如果CheckBox
All为true
,所有现有的CheckBox
将被设置为true
(isNameChecked
和 isChecked
) 并自动保存 id
(A1
、A2
、B2
等)如果 id
是 true 从 data
变成变量
否则,如果 All
框为 false,但 isNameChecked
设置为 true,则 [=结果中的 26=] 会将 isChecked
更新为 true
我不知道你是如何显示你的复选框的,但是你的适配器应该有存储在其中的所有项目的数据,并且该数据的一部分是项目是否被选中。我认为你有两种方法:
使 All
复选框 set/unset 其所有 child 项目的选中状态(即遍历列表、地图或其他任何内容并更改所有值) 然后调用 notifyDataSetChanged()
(或另一个 notify
方法)以便显示更新
不要改变 children 的选中状态(所以如果你取消选中 All
,其他人“记住”他们是否被选中)并且只决定是否他们应该 显示 根据 top-level 框
检查
在您的适配器的 onBindViewHolder
方法中(它设置项目的显示,包括它是否显示为已选中),您可以找到 parent 复选框,如果已选中,您也可以显示选中的 child。否则显示其实际状态(数据中设置的真实值)。
这只是基本的想法,您必须弄清楚如何使其适应您实际正在做的事情以及如何在数据中表示该层次结构,但这是您可以采用的一种方式!
我想在 RecyclerView.Adapter
上实现 CheckBox
但我不知道从哪里开始,我以前阅读过几篇与 CheckBox
相关的文章的参考资料RecyclerView
但是没有符合我问题的文章。
我收到了 API 的回复:
{
"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",
"name": "Data 1"
},
{
"isChecked": true,
"id": "B2",
"name": "Data 2"
},
{
"isChecked": true,
"id": "B3",
"name": "Data 2"
}
]
}
]
}
如果CheckBox
All为true
,所有现有的CheckBox
将被设置为true
(isNameChecked
和 isChecked
) 并自动保存 id
(A1
、A2
、B2
等)如果 id
是 true 从 data
变成变量
否则,如果 All
框为 false,但 isNameChecked
设置为 true,则 [=结果中的 26=] 会将 isChecked
更新为 true
我不知道你是如何显示你的复选框的,但是你的适配器应该有存储在其中的所有项目的数据,并且该数据的一部分是项目是否被选中。我认为你有两种方法:
使
All
复选框 set/unset 其所有 child 项目的选中状态(即遍历列表、地图或其他任何内容并更改所有值) 然后调用notifyDataSetChanged()
(或另一个notify
方法)以便显示更新不要改变 children 的选中状态(所以如果你取消选中
检查All
,其他人“记住”他们是否被选中)并且只决定是否他们应该 显示 根据 top-level 框
在您的适配器的 onBindViewHolder
方法中(它设置项目的显示,包括它是否显示为已选中),您可以找到 parent 复选框,如果已选中,您也可以显示选中的 child。否则显示其实际状态(数据中设置的真实值)。
这只是基本的想法,您必须弄清楚如何使其适应您实际正在做的事情以及如何在数据中表示该层次结构,但这是您可以采用的一种方式!