Я думаю, что это довольно простой вопрос, но я не могу найти ответ там ...
Я занимаюсь разработкой приложения для Android (в настоящее время разрабатывается для API v1.5), и в одном из упражнений используется ListView. Я хочу иметь возможность устанавливать свойства каждого элемента списка на основе состояния объекта в памяти, а не состояния представления или элемента списка.
Вот простой пример .... скажем, у меня есть класс Person, публичные члены которого определены следующим образом:
public class Person {
public string getName() {...}
public boolean isYoung() {...}
public boolean isMiddleAged() {...}
public boolean isOld() {...}
}
Так же, как в примере, приведенном выше, свойства в моем классе являются взаимоисключающими (поэтому только одно из трех логических значений может быть истинным). Теперь скажите, что каждый элемент списка в моем ListView создан из объекта Person. В настоящее время я использую пользовательский класс ArrayAdapter для привязки объектов Person к представлению списка (не уверен, имеет ли это значение или нет, но думал, что упомяну это).
Я хочу иметь возможность устанавливать различные свойства элемента списка (цвет текста, стиль и цвет фона) на основе значений каждого объекта Person, который связан в представлении списка. Как, возможно, сделать фоновый цвет всех молодых людей зеленым, людей среднего возраста оранжевым, а стариков черным. Как мне достичь этих результатов?
ОБНОВЛЕНИЕ: Спасибо за ваш быстрый ответ Кристиан С. Я пытался реализовать ваше решение и продолжаю получать это исключение:
Причина: org.xmlpull.v1.XmlPullParserException: строка двоичного XML-файла # 6: <item
> тег требует атрибут «drawable» или дочерний тег, определяющий drawable
... каждый раз, когда setBackgroundResource () выполняется:
public View getView(int index, View convertView, ViewGroup parent) {
//...stuff here...
if(person.isYoung())
view.setBackgroundResource(R.drawable.green);
}
Где селектор 'green.xml' определяется следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:background="@color/green" />
</selector>
Видите ли вы какие-либо вопиющие ошибки в том, что я пытаюсь сделать?
Спасибо за ваши ответы!