嗨,我在取景器方面遇到了一些问题,想知道是否有人可以提供帮助。
我有一个 SQLite 数据库,它很好,并且将小的缩略图图像作为 blob 存储在其中。我知道 blob 正在保存,因为我可以在我的应用程序的另一个区域中检索它们。
现在,我正在尝试使用 ViewBinder 将数据库中的图像绑定到我的自定义列表视图。(您可以将其视为联系人管理器的布局,其中我有一个带有相应图像的姓名和号码列表。)
我尝试了几种不同的方法,包括使用简单的光标适配器,从我的研究来看,创建我自己的视图活页夹似乎是一种方法。代码没有错误,但是在运行时我得到了 ClassCastException。
以下是我的主要列表活动中的代码
listViewCards = (ListView) findViewById(android.R.id.list);
Cursor cursor = dbhelper.getAllContacts();
SimpleCursorAdapter myAdapter = new SimpleCursorAdapter(
getApplicationContext(),
R.layout.listview_each_item,
cursor,
new String[] { SQLiteAdapter.KEY_NAME,SQLiteAdapter.KEY_PHONE, SQLiteAdapter.KEY_COMPANYNAME},
new int[] { R.id.list_item_name,R.id.list_item_phone, R.id.list_item_companyname },0);
ImageView image = (ImageView) findViewById(R.id.list_item_image);
MyViewBinder mvb = new MyViewBinder();
mvb.setViewValue(image, cursor, cursor.getColumnIndex(SQLiteAdapter.KEY_IMAGE));
myAdapter.setViewBinder(mvb);
listViewCards.setAdapter(myAdapter);
对于我的自定义视图活页夹
public class MyViewBinder implements ViewBinder{
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
ImageView image = (ImageView) view;
cursor.moveToFirst();
byte[] byteArray = cursor.getBlob(columnIndex);
if(image !=null){
image.setImageBitmap(BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length));
return false;
}
return true;
}
现在日志猫
08-14 11:01:15.275: E/AndroidRuntime(2669): FATAL EXCEPTION: main
08-14 11:01:15.275: E/AndroidRuntime(2669): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ImageView
08-14 11:01:15.275: E/AndroidRuntime(2669): at com .example.npacards.MyViewBinder.setViewValue(MyViewBinder.java:14)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:146)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.CursorAdapter.getView(CursorAdapter.java:250)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.AbsListView.obtainView(AbsListView.java:2457)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.ListView.onMeasure(ListView.java:1162)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.view.View.measure(View.java:15473)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:602)
08-14 11:01:15.275: E/AndroidRuntime(2669): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:415)
我认为活页夹中的第 14 行是
ImageView image = (ImageView) view;
谁能帮我理解为什么这会产生一个classCastExeption,因为正在传递给我的视图活页夹的视图是
ImageView image = (ImageView) findViewById(R.id.list_item_image);
任何想法都非常感谢。