Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android 4.0中的ViewBinder强制转换错误_Android_Casting_Simplecursoradapter_Android Viewbinder - Fatal编程技术网

android 4.0中的ViewBinder强制转换错误

android 4.0中的ViewBinder强制转换错误,android,casting,simplecursoradapter,android-viewbinder,Android,Casting,Simplecursoradapter,Android Viewbinder,我得到以下错误(代码中第19行是//XXX): 04-10 10:35:08.301:E/AndroidRuntime(12417): java.lang.ClassCastException:android.widget.TextView无法强制转换 到android.widget.CheckBox04-10 10:35:08.301: E/AndroidRuntime(12417):在 ms.jung.android.caldavtodo.CalDavToDoViewBinder.setVi

我得到以下错误(代码中第19行是//XXX):

04-10 10:35:08.301:E/AndroidRuntime(12417): java.lang.ClassCastException:android.widget.TextView无法强制转换 到android.widget.CheckBox04-10 10:35:08.301: E/AndroidRuntime(12417):在 ms.jung.android.caldavtodo.CalDavToDoViewBinder.setViewValue(CalDavToDoViewBinder.java:19)

我的代码:

class CalDavToDoViewBinder implements SimpleCursorAdapter.ViewBinder {

    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        int viewId = view.getId();

        if(viewId == R.id.checkBox) {
                CheckBox cb = (CheckBox) view; //XXX

                if(cursor.getInt(cursor.getColumnIndexOrThrow(CalDavToDoProvider.STATE)) == 1)
                {
                    cb.setChecked(true); 
                }
                else 
                {
                    cb.setChecked(false);
                }
                return true;

        }
        else if(viewId == R.id.colorBar)
        {

                int color = cursor.getInt(cursor.getColumnIndexOrThrow(CalDavToDoProvider.COLOR));

                TextView colorBar = (TextView)view;
                colorBar.setBackgroundColor(color);

                return true;    
        }

        return false;
    }
}
我很困惑,因为
R.id.checkBox
肯定是一个
复选框

编辑:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rowLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="0dp" >

    <TextView
        android:id="@+id/colorBar"
        android:layout_width="10dp"
        android:layout_height="fill_parent"
        android:background="@color/pink"
        android:text="@string/colorBarDefault" >
    </TextView>

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:paddingLeft="45dp"
        android:text="@string/checkBoxDefault" >
    </CheckBox>

    <TextView
        android:id="@+id/sqlID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sqlIDDefault"
        android:visibility="gone" >
    </TextView>

</LinearLayout>

解决方案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rowLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="0dp" >

    <TextView
        android:id="@+id/colorBar"
        android:layout_width="10dp"
        android:layout_height="fill_parent"
        android:background="@color/pink"
        android:text="@string/colorBarDefault" >
    </TextView>

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:paddingLeft="45dp"
        android:text="@string/checkBoxDefault" >
    </CheckBox>

    <TextView
        android:id="@+id/sqlID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sqlIDDefault"
        android:visibility="gone" >
    </TextView>

</LinearLayout>
编辑:清理项目有帮助

使用
view.setTag(objTextview)


(?)类对象,即Textview、Button、任何控件或字符串、int、数组等。我应该在代码中的什么位置放置“use view.setTag(objTextview);”?R.id.colorBar是Textview,但问题在于复选框:R.id.checkBox是否确定R.id.checkBox是复选框您可以分配给Textview,只是清理你的项目运行itokay清理项目完成了任务。。。谢谢你的帮助!