所以我得到了这段代码(针对解决方案进行了更新)。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
final Direction d = directions.get(position);
if (d != null) {
TextView direction = (TextView) row.getTag(R.id.directionTextView);
TextView departure1 = (TextView) row.getTag(R.id.departure1);
TextView departure2 = (TextView) row.getTag(R.id.departure2);
TextView departure3 = (TextView) row.getTag(R.id.departure3);
direction.setText(d.getName());
if (d.getTimeStamps().size() == 0) {
departure1.setText(R.string.nodepartures);
departure1.setTextColor(R.color.grey);
} else {
for (int i = 0; i < d.getTimeStamps().size(); i++) {
switch (i) {
case 0:
departure1.setText(d.getTimeStamps().get(i));
break;
case 1:
departure2.setText(d.getTimeStamps().get(i));
break;
case 2:
departure3.setText(d.getTimeStamps().get(i));
break;
default:
break;
}
}
}
}
return row;
}
}
我遇到的问题是其中一个 TextView 会在不应该的情况下变成灰色。我尝试通过始终将文本再次设置为黑色来修复它,但这将它们中的每一个都变成了灰色。直到我尝试:
setTextColor(context.getResources().getColor(R.color.black));
不仅仅是
setTextColor(R.color.black);
不知道为什么后者在将文本设置为灰色时起作用,但确实如此。我想我只是有点迟钝。 :)
最佳答案
您认为正在发生的事情根本不可能发生(*
、**
)。你需要做的是向自己证明它没有发生。
我会通过在代码中添加一些痕迹来做到这一点。一个放在 if
语句之前,一个放在“then”和“else”子句的开头,一个放在 if 语句之后。然后运行它。我希望这会揭示 if
语句实际上运行了两次,第一次运行“then”子句,第二次运行“else”子句。
(*理论上,如果模拟器中存在严重错误,则可能会发生这种情况。但只有在您有确凿证据时,才应考虑这种可能性。)
(** 另一种可能性是上面的示例代码与您正在测试的实际代码之间可能存在显着差异。这种情况发生了......)
关于java - 输入 if 和 else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292337/