【发布时间】:2015-05-02 23:56:26
【问题描述】:
问题是我无法加载我的图像,也许我在这里遇到了问题。也许这段代码会出错“java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0”抱歉,我无法描述我的问题 T_T。我是安卓新手。
quest.setImage(Utility.getPhoto(cursor.getBlob(1))); //也许我得到了 这里有问题
DbHelper.java
public List<Question> getAllQuestions(){
List<Question> quesList = new ArrayList<Question>();
String selectQuery = "SELECT * FROM " + TABLE_QUEST + " ORDER BY RANDOM() LIMIT 5";
dbase=this.getReadableDatabase();
Cursor cursor = dbase.rawQuery(selectQuery, null);
// looping through all rows and adding to list
//==============================================
if (cursor.moveToFirst()) {
do {
Question quest = new Question();
quest.setID(cursor.getInt(0));
quest.setImage(Utility.getPhoto(cursor.getBlob(1)));
quest.setQUESTION(cursor.getString(2));
quest.setANSWER(cursor.getString(3));
quest.setOPTA(cursor.getString(4));
quest.setOPTB(cursor.getString(5));
quest.setOPTC(cursor.getString(6));
quesList.add(quest);
} while (cursor.moveToNext());
}
// return quest list
return quesList;
}
问题.java
public Bitmap getBitmap(){
return bmp;
}
public void setImage(Bitmap img){
bmp = img;
}
实用程序.java
public class Utility {
// convert from bitmap to byte array
public static byte[] getBytes(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0, stream);
return stream.toByteArray();
}
// convert from byte array to bitmap
public static Bitmap getPhoto(byte[] image) {
return BitmapFactory.decodeByteArray(image, 0, image.length);
}
}
【问题讨论】:
-
您可以删除 if(cursor.moveToFirst()) 语句。默认情况下,返回的光标位于第一个条目之前。所以你只需要 while(cursor.moveToNext()).
-
@hitch.united,你能举个例子吗?我是新手..
-
当然,将整个 if(cursor.moveToFirst()){ do { } while (cursor.moveToNext()) } 替换为简单的 while(cursor.moveToNext()){ ... .问题代码在这里}
标签: java android arrays sqlite