Отображение текстового вида в виде элемента списка, для этого текстового представления, получающего значения, путем возврата значений из метода 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;
}
}
Вы используете пользовательский адаптер для заполнения вашего списка/ – SHANK
Да, я использую пользовательский адаптер. –
Проверьте это: http: //stackoverflow.com/questions/19150983/can-not-get-effect-of -spannablestring –