1

我有一个列表视图,想(@+id/panel)根据从 SQLite 数据库中检索到的某些条件更改视图颜色。

<?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),但从未成功更改视图颜色。

感谢您的回答。

4

1 回答 1

0

SimpleCursorAdapter是_

将列从光标映射到 XML 文件中定义的 TextViews 或 ImageViews 的简单适配器。

我不确定View您尝试绑定数据库中的值是什么,但我认为它仅适用于TextView对象(@+id/textViewB),因为TextView它是View您可以使用此接口的类型之一。

尝试改用SimpleAdapter.ViewBinder?否则使用getView()可能会给你很好的结果。

于 2013-02-12T13:18:01.330 回答