所以我有一个名为apps的表有4列和一个名为App_icon的列,我在其中将drawable转换为byte []并将其作为blob存储在colum“App_icon”中。我有一个listview,它从表中获取字段,如图所示。我还需要通过将blob转换回图像来显示左角的图像。我用来从db检索文本数据并显示的代码是:
mySQLiteAdapter.open();
String[] arrayColumns = new String[] { Dbhelper.KEY_PKG,
Dbhelper.KEY_APP, };
int[] arrayViewIDs = new int[] { R.id.appname, R.id.pkgname };
cursor = mySQLiteAdapter.getAllFolders();
adapter = new SimpleCursorAdapter(
getActivity().getApplicationContext(), R.layout.listview_items,
cursor, arrayColumns, arrayViewIDs);
lv.setAdapter(adapter);
mySQLiteAdapter.close();
其中KEY_PKG和KEY_APP是textview(appname和pkgname)中显示的其他表名。有人可以提供有关如何将图像绑定到相应字段的示例代码吗? 问候, Vijai
编辑:如果有人可以发布如何从所有行中获取“App_icon”列的值并将其存储在数组中?那将是有益的
编辑2:下面是用于获取图像的方法
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue (View view, Cursor cursor, int columnIndex){
if (view.getId() == R.id.app_icon) {
ImageView IV=(ImageView) view;
Bitmap icon;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
byte[] image = null;
Cursor images = mySQLiteAdapter.geticon();
int rows = images.getCount();
for(int i=1;i<=rows;i++){
image = mySQLiteAdapter.getIcon(i);
icon = BitmapFactory.decodeByteArray(image , 0, image .length, options);
Toast.makeText(getActivity(), "executes"+rows, Toast.LENGTH_SHORT).show();
IV.setImageBitmap(icon);
}
//IV.setBackgroundColor(Color.TRANSPARENT);
return true;
}
return false;
}
});
答案 0 :(得分:0)
首先将字节数组转换为位图,然后绑定到视图。所以自定义适配器可以解决它。
答案 1 :(得分:0)
这是一个将byte []转换为位图的简单函数:
public static Bitmap getBitmapFromBytes(byte[] bytes)
{
Bitmap bmp;
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);
return mutableBitmap;
}