Android 安卓系统可以<;选择器>;基于对象';s状态而不是视图';什么州?
我认为这是一个非常简单的问题,但我很难找到答案 我正在开发一个android应用程序(目前正在开发v1.5API),其中一个活动使用ListView。我希望能够基于内存对象的状态而不是视图或列表项的状态来设置每个列表项的属性 下面是一个简单的例子……假设我有一个Person类,其公共成员的定义如下:Android 安卓系统可以<;选择器>;基于对象';s状态而不是视图';什么州?,android,listview,css-selectors,Android,Listview,Css Selectors,我认为这是一个非常简单的问题,但我很难找到答案 我正在开发一个android应用程序(目前正在开发v1.5API),其中一个活动使用ListView。我希望能够基于内存对象的状态而不是视图或列表项的状态来设置每个列表项的属性 下面是一个简单的例子……假设我有一个Person类,其公共成员的定义如下: public class Person { public string getName() {...} public boolean isYoung() {...}
public class Person {
public string getName() {...}
public boolean isYoung() {...}
public boolean isMiddleAged() {...}
public boolean isOld() {...}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:background="@color/green" />
</selector>
就像上面概述的示例一样,我的类中的属性是互斥的(因此三个布尔值中只有一个是真的)。现在假设我的ListView中的每个列表项都是从Person对象创建的。我目前正在使用一个自定义的ArrayAdapter标记需要一个“drawable”属性或定义drawable的子标记
…每次执行setBackgroundResource()时:
public View getView(int index, View convertView, ViewGroup parent) {
//...stuff here...
if(person.isYoung())
view.setBackgroundResource(R.drawable.green);
}
其中选择器“green.xml”定义如下:
public class Person {
public string getName() {...}
public boolean isYoung() {...}
public boolean isMiddleAged() {...}
public boolean isOld() {...}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:background="@color/green" />
</selector>
你看到我所做的有什么明显的错误吗
谢谢你的回复 您必须按程序进行操作。假设您已经在XML文件中定义了所有这些选择器;然后你会有这样的东西:
private class YourAdapter extends ArrayAdapter<Person>{
// foo bar baz
//...
public View getView(int position, View convertView, ViewGroup parent){
// more foo bar baz
if( person.isYoung() )
view.setBackgroundResource(R.drawable.green);
else if( person.isMiddledAge() )
view.setBackgroundResource(R.drawable.orange);
else if( person.isOld() )
view.setBackgroundResource(R.drawable.black);// are you racist? Just kidding
return view;
}
}
然后,你会做:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/orange" />
</selector>
感谢克里斯蒂安的回复……请查看我的更新。再次感谢!完美的再次感谢您的帮助=)