我想根据当前光标成员的某些属性来筛选ListItem背景的颜色。我使用SimpleCursorAdapter将数据库的值绑定到ListView。我所做的就是创建一个颜色选择是这样的:根据属性更改背景颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@android:color/holo_blue_dark" />
<item android:state_activated="true" android:state_selected="true" android:drawable="@android:color/holo_blue_dark" />
<item android:state_selected="true" android:drawable="@color/rosa" />
<item android:drawable="@android:color/transparent" />
</selector>
我的布局是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/listitem_color" >
...
...
而且我有一个观点粘合剂,我做到以下几点:
mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.listitem, cur, cols, to,0);
mAdapter.setViewBinder(new ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (columnIndex == 6) {
boolean dudoso = cursor.getInt(columnIndex) == 1;
TextView textView = (TextView) view;
textView.setText(dudoso ? "dudoso" : null);
if(dudoso)
{
LinearLayout ll=((LinearLayout)textView.getParent().getParent());
ll.setSelected(true);
}
return true;
}
return false;
}
});
但它不起作用。什么是正确的方式来做我想要的?
我也希望如果选择了行,从而具有不同的颜色。我希望所选的颜色优先于属性颜色。 –
你是否给了你的选择器xml作为你的布局的背景,你在哪里点击你的主要xml .....? –
是的。我会将listview行的布局添加到问题中。 –