【问题标题】:show image from database sqlite显示来自数据库 sqlite 的图像
【发布时间】:2012-02-14 07:14:59
【问题描述】:

我的申请遇到了一些问题 我有这样的代码

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

我应该怎么做才能修复这个??谢谢 :)

【问题讨论】:

  • 首先你需要检查光标的计数。请使用 cur.getCount() 方法并查看游标中有多少条记录。因为您的错误发生时,可能是光标中没有记录。

标签: android database image sqlite


【解决方案1】:

试试这个:

//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));

【讨论】:

    【解决方案2】:

    如果您将图像路径而不是图像存储在数据库中会更好。使用存储在数据库中的图像路径访问这些图像。

    【讨论】:

    • 是的,我保存了路径图像,但是我将此路径与其他数据一起保存在其他表中。我想将此路径检索到我的应用程序中,但我在这部分有错误detGam.setImageDrawable(Drawable.createFromPath(cur.getString(1)))。 .你能告诉我修复这个代码吗??谢谢
    • get Drawable like this "detGam.setImageDrawable(Drawable.createFromPath(cur.getString(cur.getColumnName("your column name))));" 这意味着使用你的列名取值
    猜你喜欢
    • 2016-11-23
    • 2015-05-25
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2016-01-08
    • 2013-05-19
    • 2018-04-02
    相关资源
    最近更新 更多