【发布时间】:2010-08-05 04:42:11
【问题描述】:
我认为这是一个非常简单的问题,但我很难找到答案......
我正在开发一个 android 应用程序(目前针对 v1.5 API 进行开发),其中一个活动使用 ListView。我希望能够根据内存中对象的状态而不是视图或列表项的状态来设置每个列表项的属性。
这是一个简单的例子....假设我有一个 Person 类,其公共成员定义如下:
public class Person {
public string getName() {...}
public boolean isYoung() {...}
public boolean isMiddleAged() {...}
public boolean isOld() {...}
}
就像上面概述的示例一样,我的类中的属性是互斥的(因此三个布尔值中只有 一个 可能为真)。现在说我的 ListView 中的每个 List Item 都是从 Person 对象创建的。我目前正在使用自定义 ArrayAdapter 类将 Person 对象绑定到列表视图(不确定这是否重要,但我想我会提到它)。
我希望能够根据绑定在列表视图中的每个 Person 对象的值设置各种列表项属性(文本颜色和样式以及背景颜色)。比如可能把所有年轻人的背景颜色都设为绿色,中年人的背景颜色为橙色,老年人的背景颜色为黑色。我怎样才能达到这些结果?
更新:感谢您的快速回复 Cristian C。我一直在尝试实施您的解决方案并不断收到此异常:
原因:org.xmlpull.v1.XmlPullParserException:二进制 XML 文件第 6 行:
<item> 标记需要 '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>
您是否发现我正在尝试做的事情有任何明显的错误?
感谢您的回复!
【问题讨论】:
标签: android listview css-selectors