2012-02-14 53 views
0

像我saome問題,我的應用程序 我有這樣顯示從數據庫SQLite的

Cursor cur=helper.getGamb(almagId); 
cur.moveToFirst(); 
if(cur.getString(1).equals("")){ 
detGam.setImageResource(R.drawable.gambarnf); 
}else detGam.setImageDrawable(Drawable.createFromPath(cur.getString(1))); 
return Drawable.createFromPath(cur.getString(1)); 

代碼,但我有這樣

02-14 14:02:16.623: ERROR/AndroidRuntime(16468): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at com.sat.alfaloc.Detail.load(Detail.java:186) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at com.sat.alfaloc.Detail.onCreate(Detail.java:100) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-14 14:02:16.623: ERROR/AndroidRuntime(16468):  ... 11 more 

我應該怎麼做錯誤修復呢? ?謝謝:)

+0

首先你需要檢查光標的計數。請使用cur.getCount()方法並查看光標中有多少條記錄。因爲您的錯誤發生,因此可能是光標中沒有記錄。 – 2012-02-14 07:18:39

回答

0

試試這個:

//assuming that you have fetched the data using cursor: 
byte[] image1 = cursor.getBlob(cursor.getColumnIndexOrThrow("image_data")); 
imageView1.setImageBitmap(BitmapFactory.decodeByteArray(image1, 0, image1.length)); 
0

如果在數據庫中存儲圖像路徑而不是圖像,則更好。使用存儲在數據庫中的圖像路徑訪問這些圖像。

+0

是的,我保存路徑圖像,但我保存在其他表與其他數據此路徑..我想檢索此路徑進入我的應用程序,但我在這部分'detGam.setImageDrawable(Drawable.createFromPath(cur。 getString(1)))'..你可以告訴我修復此代碼??謝謝 – akubabas 2012-02-16 02:06:16

+0

得到像這樣的可繪製「detGam.setImageDrawable(Drawable.createFromPath(cur.getString(cur.getColumnName(」your column name))) );「這意味着使用您的列名稱來獲取價值 – 2012-02-17 04:01:09