我假设您在点击处理中使用了按钮标签.为了保留标签数据并在按钮之间添加所需的接线,您可以创建一个可用作标签的数据结构:
static class ButtonTag {
String buttonType;
Button partner;
ButtonTag(String type, Button button) {
buttonType = type;
partner = button;
}
}
然后,您可以重新组织您的设置代码:
for(int i = 1; i <= 2 ; i++) {
Button button1 = new Button(this);
button1.setId(i);
layout.addView(button1);
Button button2 = new Button(this);
button2.setId(i);
button2.setEnabled(false);
button1.setTag(new ButtonTag("age", button2));
button2.setTag(new ButtonTag("country", button1));
layout.addView(button2);
}
单击处理显然将需要更改,以将getTag()强制转换为ButtonTag而不是String.
如果不需要“年龄”和“国家”信息来区分按钮类型,只需将每个按钮设置为另一个的标签即可.
编辑:
对于后一种方案,这是在点击侦听器中使用它的方式:
public void onClick(View v) {
Object tag = v.getTag();
if (tag instanceof Button) {
Button btn = (Button) tag;
btn.setEnabled(true);
v.setEnabled(false);
}
}
如果出于其他原因,您需要标记的“年龄”和“国家/地区”部分,则代码将略有不同:
public void onClick(View v) {
Object tag = v.getTag();
if (tag instanceof ButtonTag) {
ButtonTag bTag = (ButtonTag) tag;
bTag.partner.setEnabled(true);
v.setEnabled(false);
}
}