我想基于字符串 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;
}
答案 0 :(得分:4)
我认为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);
}
答案 1 :(得分:0)
您的代码没问题,只是顺序错误。同样,在convertview为null的情况下,仅应执行视图膨胀和视图所有者创建。像这样修改您的代码
@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);
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);
TextView tvpkt = (TextView)convertView.findViewById(R.id.tv_points);
String status= viewItem.tvstatus.getText().toString();
if(status.equalsIgnoreCase("Red"))
{
tvpkt.setTextColor(Color.RED);
}
else if(status.equalsIgnoreCase("Green"))
{
tvpkt.setTextColor(Color.GREEN);
}
return convertView;
}