我在 Android 中工作,试图为 10 个按钮设置 OnClickListeners。如果我在 switch 语句中写出每个按钮的操作,我可以让代码按照我想要的方式工作,但是对于每个按钮的微小变化来说,这是很多工作。有没有办法使用循环来遍历开关的情况?
下面的代码将无法编译,“case i”处的错误表示“case 表达式必须是常量表达式”。
private OnClickListener buttonListener = new OnClickListener() {
@Override
public void onClick(final View v) {
for(int i = 0; i < 10; i++) {
switch(v.getId()) {
case i:
for(int j = 0; j < numberOfPlayers; j++) {
if(playersArray[j].isChecked()) {
playerScores[j] += i;
playersArray[j].setScore(Integer.toString(playerScores[i]));
}
}
}
}
}
};
这段代码是我试图避免做的,但仍然可以正确编译和运行:
private OnClickListener buttonListener = new OnClickListener() {
@Override
public void onClick(final View v) {
switch(v.getId()) {
case 0:
for(int i = 0; i < numberOfPlayers; i++) {
if(playersArray[i].isChecked()) {
playerScores[i] += possibleValue[0];
playersArray[i].setScore(Integer.toString(playerScores[i]));
}
}
break;
case 1:
for(int i = 0; i < numberOfPlayers; i++) {
if(playersArray[i].isChecked()) {
playerScores[i] += possibleValue[1];
playersArray[i].setScore(Integer.toString(playerScores[i]));
}
}
break;
case ... :
}
}
};