我有20个收音机按钮作为单独的停车位。我需要根据可用性启用或禁用。通常,我已将它们声明为
final RadioButton oneA101 = new RadioButton("new name", "New radio button");
以下似乎不起作用:
String[] allSlotsToDisable={"oneA101","oneB101","oneA102","oneB102"};
Object[] rb={};
for(int i=0;i<allSlotsToDisable.length;i++){
rb[i]=allSlotsToDisable[i];
((FocusWidget) rb[i]).setEnabled(false);
}
DB返回一组要禁用的单选按钮,但它们将作为String返回。返回的字符串变量是名称作为对象名称(在本例中为oneA101)。但是,我不能使用String变量来禁用单选按钮。如何使用String变量对具有相同对象名称的单选按钮进行操作?
答案 0 :(得分:3)
将它放入地图中,然后你可以通过他们的名字(或者你想要的任何其他字符串)来访问它们。
private final Map<String,RadioButton> buttonMap = new HashMap<String,RadioButton>();
然后在代码中,创建按钮时:
final RadioButton oneA101 = new RadioButton("new name", "New radio button");
buttonMap.put("new name", oneA101);
然后甚至更晚,当你需要解决它们时:
RadioButton buttonToDoStuffWith = buttonMap.get("new name");
在你的例子中
String[] allSlotsToDisable={"oneA101","oneB101","oneA102","oneB102"};
for(String toDisable:allSlotsToDisable){
RadioButton button = buttonMap.get(toDisable);
if(button!=null) {
button.setEnabled(false);
}
}
(当然要注意这个hashmap的生命周期,如果使用不当会导致问题!)