回到另一个Android问题,感觉好像我在这里错过了一些简单的东西。
视图持有者获取表格的特定字段中的内容,从中读取结果。
现在我想将结果与char进行比较以更改其所在布局的颜色,但不幸的是,它没有按计划运行。
以下是持有人的代码:
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
ViewHolder holder = (ViewHolder) view.getTag();
if (holder == null) {
holder = new ViewHolder();
holder.colImp = cursor.getColumnIndexOrThrow(BetDbAdapter.COL_OUTCOME);
holder.listTab = view.findViewById(R.id.won_lost);
view.setTag(holder);
}
if (cursor.getString(holder.colImp).trim() == "W" || cursor.getString(holder.colImp).trim() == "w") {
holder.listTab.setBackgroundColor(context.getResources().getColor(R.color.green));
} else {
holder.listTab.setBackgroundColor(context.getResources().getColor(R.color.red));
}
}
即使内容是“W”,if语句也会一直返回红色,这里是应用程序的屏幕:
这也就是插入,目前它是硬编码的,用于测试目的:
mDbAdapter.createBet("W", 12.34, 14.78);
mDbAdapter.createBet("W", 23.77, 1.90);
mDbAdapter.createBet("W", 123.45, 134);
mDbAdapter.createBet("W", 0.4, 1.34);
请看看你能否看到我无法解决的问题。
答案 0 :(得分:1)
问题在于
cursor.getString(holder.colImp).trim() == "W" || cursor.getString(holder.colImp).trim() == "w"
==
等式仅适用于原始值,或检查对象是否相同reference
。
请尝试以下
cursor.getString(holder.colImp).trim().equalsIgnoreCase("W")
答案 1 :(得分:0)
String是一个Object,所以相等比较器只是测试引用而不是值。
要测试字符串相等性,您应该使用
cursor.getString(holder.colImp).trim().equal("W");
答案 2 :(得分:0)
您正在比较代码中的字符串,而不是字符。 Char - ' W'。字符串 - " W"
如果你需要比较字符:
cursor.getString(holder.colImp).trim().charAt(0) == 'W'
但更容易比较字符串
"W".equals(otherString);