所以我得到了这段代码(更新了解决方案)。
@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”子句。
(*理论上,如果模拟器中存在严重错误,则可能会发生这种情况。但只有在有无可辩驳的证据的情况下,您才应该考虑这种可能性。)
(** 另一种可能性是上面的示例代码和您正在测试的实际代码之间可能存在显着差异。它会发生......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)