如何将存储在数据库中的图像作为真实图像检索,我使用了两种不同的方法从数据库中获取图像,但没有一种方法适用于我。
我有这个类,我正试图从listview中检索数据库中的图像。
在编制项目时,我收到以下内容:
resolveUri在坏位图uri上失败
这是我的课程之一:
public class ListProp extends ListActivity {
private static final String TAG = ListProp.class.getSimpleName();
private static final String TAG_PHOTOS = "photoThumbnailUrl";
private SQLiteDatabase database;
private CursorAdapter dataSource;
Cursor cursor;
private static final String fields[] = { "photoThumbnailUrl",
BaseColumns._ID };
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBHelper helper = new DBHelper(this);
database = helper.getReadableDatabase();
database = helper.getWritableDatabase();
Cursor data = database.query(DBHelper.TABLE, fields, null, null, null,
null, null);
dataSource = new SimpleCursorAdapter(this, R.layout.image, data,
fields, new int[] { R.id.image1 });
setListAdapter(dataSource);
System.out.println(dataSource);
database.close();
// selecting single ListView item
final ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println("I'm fine here");
ImageView image = (ImageView) findViewById(R.id.image1);
// get it as a ByteArray
while (cursor.moveToFirst())
;
byte[] imageByteArray = cursor.getBlob(cursor
.getColumnIndex(DBHelper.C_PHOTOS));
// convert it back to an image
ByteArrayInputStream imageStream = new
ByteArrayInputStream(imageByteArray);
Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
Drawable d = new BitmapDrawable(bitmap);
image.setImageResource(R.drawable.ic_launcher);
cursor.close();
lv.addView(image);
}
});
}
}
答案 0 :(得分:1)
尝试使用本教程:http://www.tutorialforandroid.com/2009/10/how-to-insert-image-data-to-sqlite.html
您必须使用BitmapFactory函数decodeByArray:
.setImageBitmap(BitmapFactory.decodeByteArray
希望这有帮助