我找到的解决方案的另一个更新
我找不到上述方法的解决方案(将单击的按钮序列保存到列表中),所以我尝试了不同的方法。这次我使用了按钮的可点击/启用属性,通过一种返回禁用/不可点击按钮的方法:
public List<TextView> getFreePos(){
TextView[] randomletters = {randomLetter1, randomLetter2, randomLetter3,
randomLetter4, randomLetter5, randomLetter6, randomLetter7};
int i;
for( i=0; i<randomletters.length; i++){
if(randomletters[i].isClickable()== false){
clickable.add(randomletters[i]);
}
}
return clickable;
}
然后在每个文本视图上使用它,我检查文本视图的文本是否等于第一个列表的对象:
String wLetter = wordLetter1.getText().toString();
if(isEmpty(wordLetter1)){
getFreePos().clear();
getFreePos();
if(clickable.get(0).getText().toString().equals(wLetter)){
clickable.get(0).setText(wLetter);
clickable.get(0).setClickable(true);
clickable.get(0).setEnabled(true);
}
else if(clickable.get(1).getText().toString().equals(wLetter)){
clickable.get(1).setText(wLetter);
clickable.get(1).setClickable(true);
clickable.get(1).setEnabled(true);
}
else if (clickable.get(2).getText().toString().equals(wLetter)){
clickable.get(2).setText(wLetter);
clickable.get(2).setClickable(true);
clickable.get(2).setEnabled(true);
}
else if (clickable.get(3).getText().toString().equals(wLetter)){
clickable.get(3).setText(wLetter);
clickable.get(3).setClickable(true);
clickable.get(3).setEnabled(true);
}
else if (clickable.get(4).getText().toString().equals(wLetter)){
clickable.get(4).setText(wLetter);
clickable.get(4).setClickable(true);
clickable.get(4).setEnabled(true);
}
else if (clickable.get(5).getText().toString().equals(wLetter)){
clickable.get(5).setText(wLetter);
clickable.get(5).setClickable(true);
clickable.get(5).setEnabled(true);
}
else if (clickable.get(6).getText().toString().equals(wLetter)){
clickable.get(6).setText(wLetter);
clickable.get(6).setClickable(true);
clickable.get(6).setEnabled(true);
}
}
wordLetter1.setText("");
这种方式工作正常,但我找不到避免所有这些 if 语句的方法(上面的代码乘以 7)。我尝试使用 for 循环,如下所示:
for (int i=0; i<clickable.size(); i++){
if (wLetter.equals(clickable.get(i).getText().toString()))
clickable.get(i).setText(wLetter);
clickable.get(i).setEnabled(true);
clickable.get(i).setClickable(true);
wordLetter3.setText("");
break;
并且还使用 switch 案例而不是 if 语句,但两者都没有按预期工作。我遇到了一些索引越界错误(并非每次都发生),并且启用了错误按钮并更改为错误字母的问题。因此,总而言之,只有上述 if/else if 方式才能按预期工作。如果代码可以更短更紧凑,我会很好。有什么想法/想法吗?