Android setViewValue无法强制转换为ImageView

Android setViewValue无法强制转换为ImageView,android,casting,Android,Casting,设置ViewBinder以替换listView中的图像: SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contacts_row, c, new String[] { c.getColumnName(1), c.getColumnName(2) },

设置ViewBinder以替换listView中的图像:

            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    R.layout.contacts_row, c, new String[] {
                            c.getColumnName(1), c.getColumnName(2) },
                    new int[] { R.id.c_title, R.id.c_description });

            adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
                public boolean setViewValue(View view, Cursor c, int columnIndex) {

                    // Variant 1: displayImage = (ImageView) view;
                    // Variant 2: displayImage = (ImageView)findViewById(R.id.img);

                    displayImage.setImageResource(R.drawable.good);

                    // }

                    return true;

                }
            });

            setListAdapter(adapter);
调用堆栈:

  • java.lang.ClassCastException:无法强制转换android.widget.TextView 到android.widget.ImageView
  • E/AndroidRuntime(8693):at
    xxxx.android.Contacts$2.setViewValue(Contacts.java:133)

请帮助澄清为什么视图变量1和变量2中都有错误,我认为所有视图都将调用设置视图值。但您只想在图像视图上设置图像。我想你可以试试这个

try {
    displayImage = (ImageView) view;
    displayImage = (ImageView)findViewById(R.id.img);
    displayImage.setImageResource(R.drawable.good);
} catch (ClassCastException e) {
}
或者你也可以试试这个

if (view instanceof ImageView) {
     // DO YOUR IMAGEVIEW RELATED STUFF HERE.
    displayImage = (ImageView) view;
    displayImage = (ImageView)findViewById(R.id.img);
    displayImage.setImageResource(R.drawable.good);
}

实际问题是,将为不同类型的视图调用setViewValue,并且不能在ImageView中键入强制转换所有视图。在您的情况下,行布局包含Textview和ImageView,当为ImageView调用setViewValue时,您可以键入并使用它们,但当为任何其他类型的视图调用它时,它将触发异常,因为您无法键入它。希望它能帮助你。:)

首先清理您的项目并再次运行它
android.widget.TextView无法转换为android.widget.ImageView E/AndroidRuntime(8693):
这表示您正在尝试将TextView转换为第133行的ImageView。如果您仍然得到错误,则表示您正在尝试将TextView转换为ImageView。已清理-无结果;再生R-无结果;是的,我知道它试图将它从文本转换为图像,因为View-View-TextView;如何克服它?在这行中,什么是视图(TextView或ImageView)setViewValue(视图视图、光标c、int columnIndex)