我一直在努力了解SQLite DB在android中的工作原理。我制作了一个简单的应用程序,使用相机拍摄照片并将其显示在屏幕上...我喜欢做的事情也是存储照片的描述 - 而且我知道怎么做的最好方法是一个db。但我无法理解如何存储图像。
来自相机的图像有点大,所以我真的不想将它作为blob存储在DB中。我一直在努力将文件路径存储为数据库中的文本字段 - 我认为SQL是正确的存储路径。这是我的DBAdapter类:
private static final String DATABASE_CREATE_SQL =
"create table " + DATABASE_TABLE
+ " (" + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_USERNAME + " text, "
+ KEY_DATE + " text, "
+ KEY_PHOTO_DESCRIPTION + " text, "
+ KEY_IMAGE_PATH + " text"
+ ");";
插入方法:
public long insertRow(String username, String date, String photoDesc, String imagePath) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_USERNAME, username);
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_PHOTO_DESCRIPTION, photoDesc);
initialValues.put(KEY_IMAGE_PATH, imagePath);
// Insert it into the database.
return db.insert(DATABASE_TABLE, null, initialValues);
}
然后在我的MainActivity中 - onActivityResult()用于从相机接收图像:
private void receiveImage(int resultCode) {
if(resultCode == Activity.RESULT_OK) {
getContentResolver().notifyChange(imageUri, null);
ContentResolver contentResolver = getContentResolver();
try {
imageBitmap = MediaStore.Images.Media.getBitmap(contentResolver, imageUri);
} catch(Exception e) {
Toast.makeText(TakePhotoActivity.this, "failed to load", Toast.LENGTH_LONG).show();
Log.e(LOG_TAG, e.toString());
}
}
}
这就是我将行添加到数据库的方式:
public void onClick_AddRecord(View v) {
long newId = myDb.insertRow("User", "00/00/0000",
"image description", imageUri);
populateListViewFromDB();
}
现在问题 - 如果我创建一个活动来查看存储在一行中的所有信息,我如何访问图像并将其分配给ImageView?
答案 0 :(得分:0)
请检查是否有帮助:
ImageView.setImageURI()
将图像URI与imageView绑定。