首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将选中的已更改监听器添加到动态添加的复选框Xamarin Android

将选中的已更改监听器添加到动态添加的复选框Xamarin Android
EN

Stack Overflow用户
提问于 2021-08-12 11:13:14
回答 1查看 49关注 0票数 0

我正在尝试对复选框进行分组,以便在选中时取消选中另一个复选框。我动态地添加它们,当我添加它们时,我给它们一个单击事件侦听器,但是侦听器只在添加的最后一对复选框上被调用,而不在其他复选框上被调用。因此,我有6对复选框,但只有最后一对调用单击事件侦听器。这是我尝试过的:

代码语言:javascript
复制
foreach (KeyValuePair<string, string> pair in parametros)
            {
                LinearLayout inner_container = new LinearLayout(this);
                inner_container.Orientation = Orientation.Vertical;
                TextView tt = new TextView(this);
                tt.Text = pair.Value;
                inner_container.AddView(tt);
                LinearLayout horizontal = new LinearLayout(this);
                horizontal.Orientation = Orientation.Horizontal;
                ckb_conforme = new CheckBox(this);
                ckb_conforme.Text = "Conforme";
                list_ckb.Add(ckb_conforme);
                list_ckb_conforme.Add(ckb_conforme);
                ckb_nao_conforme = new CheckBox(this);
                ckb_nao_conforme.Text = "Não Conforme";
                list_ckb_nao_conforme.Add(ckb_nao_conforme);

                // Make only one checkbox selected
                ckb_conforme.Click += (sender, args) =>
                {
                    if (ckb_conforme.Checked)
                        ckb_nao_conforme.Checked = !ckb_conforme.Checked;
                };
                ckb_nao_conforme.Click += (sender, args) =>
                {
                    if (ckb_nao_conforme.Checked)
                        ckb_conforme.Checked = !ckb_nao_conforme.Checked;
                };

                //ckb_conforme.SetOnCheckedChangeListener(OnCheckedChanged(ckb_conforme, false));
                //ckb_nao_conforme.SetOnCheckedChangeListener(OnCheckedChanged(ckb_nao_conforme, false));

                horizontal.AddView(ckb_conforme);
                horizontal.AddView(ckb_nao_conforme);
                inner_container.AddView(horizontal);
                params_container.AddView(inner_container);
            }

因此,我尝试将每个复选框放入复选框列表中,然后遍历它们,并将其属性设置为选中的已更改事件侦听器:

代码语言:javascript
复制
for (int i = 0; i < list_ckb_conforme.Count - 1; i++)
            {
                list_ckb_conforme[i].CheckedChange += (sender, args) =>
                {
                    if (list_ckb_conforme[i].Checked)
                        list_ckb_nao_conforme[i].Checked = !list_ckb_conforme[i].Checked;
                };
                list_ckb_nao_conforme[i].CheckedChange += (sender, args) =>
                {
                    if (list_ckb_nao_conforme[i].Checked)
                        list_ckb_conforme[i].Checked = !list_ckb_nao_conforme[i].Checked;
                };
            }

这也不起作用,如何在创建复选框时将复选框成对组合在一起,并为它们提供选中的已更改事件侦听器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 02:32:43

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68756382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档