将选中的已更改侦听器添加到动态添加的复选框 Xamarin Android
Add a checked changed listener to dynamically added checkboxes Xamarin Android
我正在尝试对复选框进行分组,以便在选中时取消选中另一个。
我正在动态添加它们,当我添加它们时,我给了它们一个点击事件监听器,但监听器只在最后一对添加的复选框上被调用,而不是在其他复选框上被调用。
所以我有 6 对复选框,但只有最后一对调用点击事件侦听器。这是我试过的:
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);
}
所以我尝试将每个复选框都放在一个复选框列表中,然后遍历它们并将它们归因于一个已检查的已更改事件侦听器:
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;
};
}
这也不起作用,我怎样才能让复选框在创建时成对组合在一起,并为它们提供已选中的已更改事件侦听器?
单选按钮是进行单选的更好选择。
以下是您可能需要的一些文件:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/radiobutton
Api:
https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.radiobutton?view=xamarin-forms
另外,你可以根据不同的情况尝试使用picker:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/picker/
我正在尝试对复选框进行分组,以便在选中时取消选中另一个。 我正在动态添加它们,当我添加它们时,我给了它们一个点击事件监听器,但监听器只在最后一对添加的复选框上被调用,而不是在其他复选框上被调用。 所以我有 6 对复选框,但只有最后一对调用点击事件侦听器。这是我试过的:
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);
}
所以我尝试将每个复选框都放在一个复选框列表中,然后遍历它们并将它们归因于一个已检查的已更改事件侦听器:
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;
};
}
这也不起作用,我怎样才能让复选框在创建时成对组合在一起,并为它们提供已选中的已更改事件侦听器?
单选按钮是进行单选的更好选择。 以下是您可能需要的一些文件: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/radiobutton
Api:
https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.radiobutton?view=xamarin-forms
另外,你可以根据不同的情况尝试使用picker:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/picker/