Android自定义ListView文本颜色未更改

Android自定义ListView文本颜色未更改,android,listview,android-listview,colors,Android,Listview,Android Listview,Colors,我正在尝试根据某些条件更改文本视图的颜色。我使用的是阿穆利亚·哈雷给出的解决方案。所以现在我已经根据我的要求修改了这段代码 我的代码如下 public class MyAdapter extends ArrayAdapter<String> { Context context; int layoutResourceId; String data[] = null; String color[] = null; public MyAdapter(Context context, i

我正在尝试根据某些条件更改文本视图的颜色。我使用的是阿穆利亚·哈雷给出的解决方案。所以现在我已经根据我的要求修改了这段代码

我的代码如下

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;
}
}
公共类MyAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
字符串数据[]=null;
字符串颜色[]=null;
公共MyAdapter(上下文上下文,int-layoutResourceId,字符串[]数据,
字符串[]颜色){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
这个颜色=颜色;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
StringHolder=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的纵梁支架();
holder.txtTitle=(TextView)row.findViewById(R.id.text1);
row.setTag(支架);
}否则{
holder=(StringHolder)行。getTag();
}
holder.txtitle.setText(数据[位置]);
//row.setBackgroundColor(Color.parseColor(Color[position]));
//holder.txtTitle.setTextColor(Color.parseColor(Color[位置]);
如果(代码天数<2){
holder.txtTitle.setTextColor(Color.RED);
}
如果(代码天数<5){
holder.txtTitle.setTextColor(Color.YELLOW);
}
如果(代码天>8){
holder.txtTitle.setTextColor(Color.GREEN);
}
返回行;
}
静态类桁条夹持器{
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);
}
否则如果(代码天数<5){
holder.txtTitle.setTextColor(Color.YELLOW);
}
否则如果(代码天>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);
 }
if(code.8天)
{
holder.txtTitle.setTextColor(Color.GREEN);
}

如果在第二个和第三个条件中,您应该使用一个模型类,并具有setter和getters,请尝试使用else。这也不起作用,如果我这样做,那么同样的事情正在发生,它改变了所有数据的颜色,而不是任何特定的数据。对于你的条件,两个颜色将是黄色的,因为它被捕获在中间,如果代码5天,6的颜色将是默认的,因为它不在那些if检查中处理。我必须做什么其他更改才能达到我想要做的。是真的吗,使用这样的条件所有文本都是相同的颜色?是的,当然,如果你的答案是正确的,那么我肯定会接受它。