1
當檢索圖像時,我將顯示另一個檢索圖像(Blob)的問題,如果將圖像從數據庫記錄更改爲另一個圖像,則以前的圖像將會現金不會變成新的形象..! Datbase表:當從SQLite數據庫檢索到時,Android Image不會改變
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS student(" +
"Sid INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstName TEXT, " +
"lastName TEXT, " +
"photo BLOB, " +
"book TEXT)";
db.execSQL(sql);
}
手動插入一些數據
ContentValues values = new ContentValues();
values.put("firstName", "Roza");
values.put("lastName", "Jack");
// profile picture of sudent
values.put("photo", convertimg(R.drawable.sudent_1));
values.put("book", "Andriod programming");
db.insert("student", "book", values);
轉換方法的圖像爲BLOB
public static byte[] convertimg(int drawimg)
{
Bitmap bitmap = BitmapFactory.decodeResource(myresurse, drawimg);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100 , bos);
byte[] bitmapdata = bos.toByteArray();
return bitmapdata;
}
和檢索圖像和設置爲ImageView的。
db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor cur=db.rawQuery("select firstname || ' ' || lastname as fullname,book,photo from student where Sid=1" , null);
cur.moveToNext();
ImageView imgprofile = (ImageView) findViewById(R.id.studentphoto);
byte[] mybyte=cur.getBlob(cur.getColumnIndex("photo"));
ByteArrayInputStream imageStream = new ByteArrayInputStream(mybyte);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
imgprofile.setImageBitmap(theImage);
imgprofile.invalidate();
我的大問題是在這裏,如果我想以前的圖像
values.put("photo", convertimg(R.drawable.sudent_1));
改變這樣的第二圖像的圖像不顯示,而不是第一個圖像
values.put("photo", convertimg(R.drawable.sudent_2));
謝謝,但直到我有問題,我用imgprofile.invalidate(); – Gulan
我沒有得到你所說的?你有沒有使用invalidate()方法? – Rakhita
你對我的問題或什麼意思? – Gulan