我有一个listview,想根据从SQLite数据库中检索到的某些条件更改View (@+id/panel)
颜色。
<?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="fill_parent" >
<LinearLayout
android:layout_width="10dp"
android:layout_height="fill_parent"
android:layout_weight="0.01"
android:orientation="vertical" >
<View
android:id="@+id/panel"
android:layout_width="10dip"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#ffa500"
android:layout_marginRight="4dip"
/>
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="2.86"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>
</LinearLayout>
我正在使用SimpleCursorAdapter.ViewBinder来做到这一点:
SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
if (view.getId() == R.id.panel)
{
String name = cursor.getString(1);
if (name.equals("Ravi")) {
view.setBackgroundColor(Color.RED);
} else {
view.setBackgroundColor(Color.BLUE);
}
return true;
}
return false;
}
listView.setAdapter(dataAdapter);
dataAdapter.setViewBinder(binder);
此代码仍无效。代码永远不会通过条件。
我可以更改TextView对象(@+id/textViewB)
的字体颜色,但从未成功更改视图颜色。
感谢您的回答。
答案 0 :(得分:0)
一个简单的适配器,用于将列从游标映射到TextViews或 ImageViews在XML文件中定义。
我不确定你试图绑定数据库中的值View
,但我认为它只适用于TextView
对象(@+id/textViewB)
,因为{ {1}}是您可以使用此界面的TextView
类型之一。
尝试使用SimpleAdapter.ViewBinder代替?否则使用View
可能会给你带来好的结果。