我在做Android應用程序具有此數據庫從SQL一個ListView:添加圖像使用資產文件夾的圖片
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS snacks (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"disc TEXT, " +
"photo TEXT, " +
"thumb TEXT, " +
"ingre TEXT, " +
"howto TEXT, " +
"info TEXT, " +
"snackId INTEGER)";
db.execSQL(sql);
ContentValues values = new ContentValues();
values.put("name", "Name 1");
values.put("disc", "here is the description");
values.put("photo", "stub.png");
values.put("thumb", "stub.png");
values.put("ingre", "the ingredients of the snack");
values.put("howto", "how to make this thing");
values.put("info", "basically its this much calorie and such and such");
db.insert("snacks", "name", values);...............etc etc ......`
在我的活動之一,我有一個可以查詢數據庫搜索欄。結果顯示在列表視圖中。當我點擊列表中的一個項目時,我會得到它的詳細信息,包括照片。 我的照片位於資源文件夾中。我想從資產文件夾中檢索照片並顯示它的縮略圖。我嘗試使用資產經理這樣
public void search(View view) {
cursor = db.rawQuery("SELECT _id, name, disc, thumb FROM snacks WHERE name LIKE ?", new String[]{"%" + searchText.getText().toString() + "%"});
adapter = new SimpleCursorAdapter(
this,
R.layout.cook_tab_snackslist,
cursor,
new String[] {"name", "disc"},
new int[] {R.id.name, R.id.disc});
Thumb = (ImageView) findViewById(R.id.thumb);
try {
InputStream bitmap=getAssets().open(cursor.getString(cursor.getColumnIndexOrThrow("thumb")));
Bitmap bit=BitmapFactory.decodeStream(bitmap);
Thumb.setImageBitmap(bit);
} catch (IOException e1) {
e1.printStackTrace();
}
setListAdapter(adapter);
}
我知道這是不正確的,我發現了以下錯誤:
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 7
我能做些什麼?我甚至會以正確的方式去解決這個問題嗎?
答案從slukian是正確的。爲了擴展它 - 查詢返回的遊標位置在第一條記錄之前設置爲'之前'。由於遊標的第一條記錄的'索引'爲0,因此光標位置爲-1是有意義的。正如slukian所說,你需要通過調用moveToFirst或簡單的moveToNext來移動光標位置。 – Squonk 2012-02-16 19:59:15
現在,當我搜索不存在的東西時,應用程序崩潰並出現此錯誤: .CursorIndexOutOfBoundsException:請求索引0,大小爲0 ...任何想法? – FirstLaw 2012-02-19 18:05:24