Android自定义ListView文本颜色没有更改



我正试图根据某些条件更改文本视图的颜色。我正在使用Amulya Khare安卓系统提供的解决方案,从字符串数组中设置listItem背景颜色。所以现在我已经根据我的要求对这个代码进行了一些修改。

我的代码在下面。

public class MyAdapter extends ArrayAdapter<String> {
Context context;
int layoutResourceId;
String data[] = null;
String color[] = null;
public MyAdapter(Context context, int layoutResourceId, String[] data,
        String[] color) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
    this.color = color;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    StringHolder holder = null;
    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new StringHolder();
        holder.txtTitle = (TextView) row.findViewById(R.id.text1);
        row.setTag(holder);
    } else {
        holder = (StringHolder) row.getTag();
    }
    holder.txtTitle.setText(data[position]);
    // row.setBackgroundColor(Color.parseColor(color[position]));
    // holder.txtTitle.setTextColor(Color.parseColor(color[position]));
    if (Code.days < 2) {
        holder.txtTitle.setTextColor(Color.RED);
    }
    if (Code.days < 5) {
        holder.txtTitle.setTextColor(Color.YELLOW);
    }
    if (Code.days > 8) {
        holder.txtTitle.setTextColor(Color.GREEN);
    }
    return row;
}
static class StringHolder {
    TextView txtTitle;
}
}

我想做的是,如果天数小于2,那么文本颜色应该是红色。如果天数小于5,那么文本的颜色应该是黄色等等。但我在文本视图中只得到黄色的文本。

另一个问题是,当我从列表视图中删除任何数据时,所有数据的颜色都会变为默认颜色,比如黑色。

那么如何解决这个问题。提前谢谢。

您应该使用以下条件

if (Code.days < 2) {
    holder.txtTitle.setTextColor(Color.RED);
}
else if (Code.days < 5) {
    holder.txtTitle.setTextColor(Color.YELLOW);
}
else if (Code.days > 8) {
    holder.txtTitle.setTextColor(Color.GREEN);
}

试试这个

 if (Code.days<2) 
 {
   holder.txtTitle.setTextColor(Color.RED);
 }
 else if (Code.days < 5)  
 {
      holder.txtTitle.setTextColor(Color.YELLOW);
 }
 else if (Code.days > 8) 
 {
   holder.txtTitle.setTextColor(Color.GREEN);
 }

最新更新