我知道这是一个普遍的问题,我整天都在研究这个问题,但我想知道是否可以使用'for'语句设置多个对象并避免多个if-elses。所以我有这个:
那么我怎样才能为每个列名设置我的对象(一个对象代表一列),而不是逐个创建它们然后将它们“手动”添加到ArrayList中,或者如果我使用'for'如何避免那些if-else设置类型?
ArrayList<MyColumnObj> arrayList = new ArrayList<MyColumnObj>;
for (int i = 0; i < columns.length; i++) {
Button btn = new HeaderButton(this);
btn.setPosition(i);
btn.setColumnName(columns[i]);
int columnWidth = 150;
MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
myColumnObject.setTag(i);
if (columns[i].equals("Column 1") {
myColumnObject.setType("Column Number");
} else if (columns[i].equals("Column 2") {
myColumnObject.setType("Column Colored");
}
...
else if (columns[i].equals("Column 50") {
myColumnObject.setType("Column Text");
}
arrayList.add(myColumnObject);
}
我很感激任何答案。感谢。
答案 0 :(得分:0)
使用Map<String, String>
将列名称映射到setType
参数。然后你就是这样做的:
for (int i = 0; i < columns.length; i++) {
Button btn = new HeaderButton(this);
btn.setPosition(i);
btn.setColumnName(columns[i]);
int columnWidth = 150;
MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
myColumnObject.setTag(i);
myColumnObject.setType(typeMap.get(columns[i]); // typeMap contains your mappings
arrayList.add(myColumnObject);
}
答案 1 :(得分:0)
如果你的列名是连续的,就像Array-index那样会很有用。然后:
for (int i = 0; i < columns.length; i++) {
Button btn = new HeaderButton(this);
btn.setPosition(i);
btn.setColumnName(columns[i]);
int columnWidth = 150;
MyColumnObj myColumnObject = new MyColumnObj(btn, columnWidth);
myColumnObject.setTag(i);
if(columns[i].equals("Column" + i){
myColumnObject.setType("Type" + i);
}
arrayList.add(myColumnObject);
}
答案 2 :(得分:0)
你必须把你的数据放在地图,键(列)值(类型) 然后选择它