java - 如何根据ListView中的String值设置TextColor?

标签 java android listview

我想根据字符串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/

相关文章:

java - CXF RESTful : No message body reader has been found for request class, 内容类型:application/json

java - 设计 Web 服务的最佳方法,必须将请求中的数据存储在列表或类似结构中

Android GoogleAnalytics 获取实例

javascript - React-native pubnub WebRTC 视频聊天

java - Android ListView 持久化背景

java - 是什么让引用比较 (==) 对 Java 中的某些字符串起作用?

java - 如何使用maven过滤依赖jar中的资源?

android - 在具有多 SIM 卡的设备中检索 ConnectivityManager 时出现问题

java - 重新排列 SimpleCursorAdapter 中的 ListView 项目

Android - 如何删除列表项?