我想根据字符串STATUS设置textview的文本颜色。
如果状态 = 红色,则文本应为红色;如果状态 = 绿色,则文本应为绿色。我尝试了很多解决方案,但仍然无法设置颜色...
这是我的代码:
适配器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewItem viewItem = null;
if (convertView == null) {
viewItem = new ViewItem();
LayoutInflater layoutInfiater = (LayoutInflater) this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = layoutInfiater.inflate(R.layout.listview_items, null);
viewItem.tvDescription = (TextView) convertView.findViewById(R.id.tv_description);
viewItem.tvDate = (TextView) convertView.findViewById(R.id.tv_date);
viewItem.tvPoints = (TextView) convertView.findViewById(R.id.tv_points);
viewItem.tvStatus = (TextView) convertView.findViewById(R.id.tv_status);
TextView tvpkt = (TextView) convertView.findViewById(R.id.tv_points);
TextView tvstatus = (TextView) convertView.findViewById(R.id.tv_status);
String status = tvstatus.getText().toString();
if (status.equals("Red")) {
tvpkt.setTextColor(Color.RED);
} else if (status.equals("Green")) {
tvpkt.setTextColor(Color.GREEN);
}
convertView.setTag(viewItem);
} else {
viewItem = (ViewItem) convertView.getTag();
}
viewItem.tvDescription.setText(valueList.get(position).Description);
viewItem.tvDate.setText(valueList.get(position).Date);
viewItem.tvPoints.setText(valueList.get(position).Points);
viewItem.tvStatus.setText(valueList.get(position).Status);
return convertView;
}
最佳答案
我认为String status
与稍后的if-statement
中的条件不匹配。
跳过字符串区分大小写的一种方法是使用 equalsIgnoreCase它基本上比较两个字符串,忽略大小写。
类似这样的事情:
if(status.equalsIgnoreCase("Red")){
tvpkt.setTextColor(Color.RED);
}
else if(status.equalsIgnoreCase("Green")){
tvpkt.setTextColor(Color.GREEN);
}
另一种方法是在比较之前使用 toUpperCase() 将 status
大写方法,类似这样:
String status = tvstatus.getText().toString().toUpperCase;
然后将其与大写版本的字符串进行比较:
if(status.equals("RED")){
tvpkt.setTextColor(Color.RED);
}
else if(status.equals("GREEN")){
tvpkt.setTextColor(Color.GREEN);
}
关于java - 如何根据ListView中的String值设置TextColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977467/