如何根据文本更改ListView元素文本颜色

时间:2013-10-15 05:33:07

标签: android listview

将textview显示为列表元素,对于此textview,通过从方法getValues()返回值来获取值,因此将text {text}视图文本设置为t1.setText(getValues());这些值就像(123 kms,12 kms,13 kms) ,15公里,198公里,135公里,456公里,12公里,135公里,147公里,....)我想比较所有元素与第一个,如果它比第一个元素更大,文本颜色是红色,如果它小于第一个元素它是蓝色的,我尝试了这样的东西并得到了两个列表。

我尝试了什么

 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文本和两种颜色。帮助我。

尝试了类似这样的代码

 if(odo_chk_num>400)
                       {

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

                       }  

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

但是首先如果条件执行然后所有文本颜色变为RED,但我需要的文本应该是基于条件的RED。 ADAPTER CLASS

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;
       }

}

1 个答案:

答案 0 :(得分:0)

让一个包装类获取该类中的所有变量和一个另外的varible,它是int类型的颜色代码,并在一个方法中计算此条件,并在使用此包装器填充列表后填充包装器中的所有数据和颜色代码当您滚动视图时,您的颜色代码也会保持不变或不变。