You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取根据数据库结果动态生成的CheckBox的选中状态

动态生成CheckBox选中状态获取方案

你已经在生成控件时维护了checkBoxes数组存储所有CheckBox实例,直接遍历该数组判断选中状态是性能最优的实现方式,不需要额外遍历父容器查询控件。

基础实现代码(获取所有选中的表名)

// 存储所有选中的表名
List<string> selectedTables = new List<string>();
foreach (var cb in checkBoxes)
{
    if (cb.Checked)
    {
        selectedTables.Add(cb.Text);
    }
}
// 后续可直接使用selectedTables处理业务逻辑

可选替代方案(无需维护CheckBox数组)

如果你后续不想再全局维护checkBoxes数组,也可以直接遍历CheckBox的父布局,筛选出所有CheckBox控件再判断状态:

List<string> selectedTables = new List<string>();
// 此处lineView为你添加CheckBox的父LinearLayout容器
for (int i = 0; i < lineView.ChildCount; i++)
{
    if (lineView.GetChildAt(i) is CheckBox cb && cb.Checked)
    {
        selectedTables.Add(cb.Text);
    }
}

实现优化建议

  • 你当前使用Array.Resize动态扩容数组的实现性能较差,建议将存储CheckBox的容器改为List<CheckBox>,无需手动处理扩容逻辑,使用更便捷:
    // 初始化替换为List
    List<CheckBox> checkBoxes = new List<CheckBox>();
    // 循环内添加实例直接调用Add方法即可
    checkBoxes.Add(checkBox);
    
  • 若需要实时监听选中状态变化,不需要等到用户主动触发查询操作,可在创建CheckBox时直接绑定CheckedChange事件:
    checkBox.CheckedChange += (sender, args) =>
    {
        var currentCheckBox = sender as CheckBox;
        if (args.IsChecked)
        {
            // 此处写选中后的逻辑
        }
        else
        {
            // 此处写取消选中后的逻辑
        }
    };
    

内容的提问来源于stack exchange,提问作者OhNo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:27:04