2013-10-15 4 views
1

Отображение текстового вида в виде элемента списка, для этого текстового представления, получающего значения, путем возврата значений из метода getValues(), поэтому настройка текста в текстовом виде как это t1.setText(getValues()); Эти значения подобны (123 км, 12 км) , 13 км, 15 км, 198 км, 135 км, 456 км, 12 км, 135 км, 147 км, ....). Я хочу сравнить все элементы с первым, и если это больше, чем первый элемент, то цвет текста RED, если он меньше первого элемента, он ГОЛУБОЙ, я пробовал что-то вроде этого и получил два списка.Как изменить цвет текста элемента ListView на основе текста

Что я пытался

List<Integer> myList = Arrays.asList(12,34,45,23,45,7,68,4,345,56,67,4,999,454,6,76,0); 
     Iterator<Integer> iter = myList.iterator(); 
     List<Integer> lessList = new ArrayList<Integer>(), biggerList = new ArrayList<Integer>(); 
     Integer firstItem = iter.next(); 
     while (iter.hasNext()) { 
      Integer currElement = iter.next(); 
      if (firstItem.compareTo(currElement) > -1) { 
       lessList.add(currElement); 
      } else { 
       biggerList.add(currElement); 
      } 
     } 

здесь я не получаю, как установить текст TextView и двух цветов для одной TextView. Помоги мне.

попробовал код что-то вроде этого

if(odo_chk_num>400) 
         { 

           if(t2!=null) 
           { 
            t2.setTextColor(Color.RED); 
           t2.setText(getValues()); 
           } 

         } 

else 
         { 
          t2.setTextColor(Color.BLACK); 
         } 

но здесь первым, если условие выполняется, то все тексты изменения цвета к красному, но то, что мне нужно текст должен быть RED основан только на состоянии. ADAPTER КЛАСС

public class FileArrayAdapter extends ArrayAdapter<Option>{ 

    private Context c; 
    private int id; 
    private List<Option>items; 

    public FileArrayAdapter(Context context, int textViewResourceId, 
      List<Option> objects) { 
     super(context, textViewResourceId, objects); 
     c = context; 
     id = textViewResourceId; 
     items = objects; 
    } 
    public Option getItem(int i) 
    { 
     return items.get(i); 
    } 
    @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
       View v = convertView; 
       if (v == null) { 
        LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        v = vi.inflate(id, null); 
       } 
       final Option o = items.get(position); 
       if (o != null) { 
         TextView t1 = (TextView) v.findViewById(R.id.TextView01); 
         TextView t2 = (TextView) v.findViewById(R.id.TextView02); 

         if(o.getDDS().equals("Odometer reading:")) 
         { 

          int odo_num, odo_chk_num = 0; 
          System.out.println(""); 
          String odo_str=o.getSpans(); 

          for(int i = 0 ; i<o.getSpans().length();i++) 
          { 
           char xyz=odo_str.charAt(i); 
           System.out.println(""); 
           if(xyz >= '0' && xyz <= '9') 
           { 
           odo_num=(int)xyz; 

           odo_chk_num= odo_chk_num*10 + odo_num; 

           } 

          } 

         // System.out.println("after digit" + odo_chk_num); 


          if(odo_chk_num>40000) 
          { 
           if(t1!=null) 
            t1.setText(o.getDDS()); 
            if(t2!=null) 
            { 
            // t2.setTextColor(Color.RED); 
             SpannableStringBuilder sb = new SpannableStringBuilder(o.getSpans()); 
             ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158, 158, 158)); 
             sb.setSpan(fcs, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
            t2.setText(sb); 
            } 

          } 

         } 


         else 
         { 
          t2.setTextColor(Color.BLACK); 

         if(t1!=null) 
         t1.setText(o.getDDS()); 
         if(t2!=null) 
         t2.setText(o.getSpans()); 
         } 

       } 
       return v; 
     } 

} 
+0

Вы используете пользовательский адаптер для заполнения вашего списка/ – SHANK

+0

Да, я использую пользовательский адаптер. –

+0

Проверьте это: http: //stackoverflow.com/questions/19150983/can-not-get-effect-of -spannablestring –

ответ

0

сделать класс один обертки принять все varible в этом классе и один дополнительный varible, который является цветовым кодом, который является INT типа и рассчитать это условие в одном методе и заполнить все данные и коды цвета в упаковке после этого вы заполняете свой список этой оберткой, и ваш цветовой код также является постоянным или не меняется во время прокрутки вами.

Смежные вопросы