2013-12-18 3 views
0

Я пытаюсь изменить цвет текстового представления на основе некоторого состояния. Я использую решение, данное Amulya Khare Android set listItem background colour from String Array. Так что теперь я немного изменил этот код в соответствии с моим требованием.Android Custom ListView Текст Цвет не меняется

Мой код ниже.

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, то цвет текста должен быть RED же, если она меньше 5, то цвет текста должен быть желтым анс так далее. Но я получаю только ЖЕЛТЫЙ цветной текст в текстовом виде.

Другая проблема заключается в том, что когда я удаляю любые данные из списка, все цвета данных меняют цвет по умолчанию - черный.

Как решить эту проблему. Заранее спасибо.

+0

попробовать еще, если вместо того, если в вашем втором и третьем состояния –

+0

вы должны использовать класс модели имеют сеттер и добытчик – Raghunandan

ответ

1

Вы должны использовать такие условия:

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); 
} 
+0

Эти также не работает, если я делаю это, тогда происходит то же самое, что он меняет цвет всех данных, а не какие-либо конкретные данные. – InnocentKiller

+0

Для ваших условий цвет для двоих будет желтым, потому что он зацепился в середине, если где Code.days <5, а цвет для 6 будет по умолчанию, потому что он не обрабатывается в тех случаях, когда чеки – Niko

+0

, какие другие изменения мне нужно сделать для достижения что я хотел сделать. – InnocentKiller

0

Попробуйте

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); 
} 
Смежные вопросы