2013-01-08 232 views
0

例如,我有這個表:查詢多個字段的數據庫

enter image description here

我使用下面的方法從該表中查詢:

public ArrayList<ArrayList<String>> getAllViandCategory() { 
     ArrayList<ArrayList<String>> data2 = new ArrayList<ArrayList<String>>(); 
     ArrayList<String> data = new ArrayList<String>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + "tbl_viand_category"; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     if (cursor.moveToFirst()) { 
      do { 
       data.add(cursor.getString(0)); 
       data.add(cursor.getString(1)); 
       data2.add(data); 
      } while (cursor.moveToNext()); 

     } 
     return data2; 
    } 

我沒有得到的期望的輸出。我得到這個:[1,Fish,2,Vegetables,3,Meat,4,Rice,5,Etc]而不是[[1,Fish],[2,Vegetables],[3,Meat],[4,Rice],[5,Etc]]

回答

0

你有什麼是列表清單。外部列表包含具有列表的對象。

// Code to add a list object into outer list. 
data2.add(data); 

您會注意到您只創建了一次數據對象。所以基本上同一個對象被一次又一次地插入到data2中。

您需要爲每次迭代創建一個新的數據對象。

// New Code 
if (cursor.moveToFirst()) { 
     do { 
      data = new ArrayList<String>(); 
      data.add(cursor.getString(0)); 
      data.add(cursor.getString(1)); 
      data2.add(data); 
     } while (cursor.moveToNext()); 

    } 

希望幫助:d