2015-12-09 34 views
0

我正在一個小的Android應用程序,爲遊戲EVE。Android SQLite不返回所有行的列表

,而在活動工作增加新的角色我創造了自己所有的CRUD操作和諸如此類的東西,你可以在here看一看的數據庫處理的一類,但最重要的是什麼我的問題是,getAllCharacters()方法返回和空列表。

public List<Character> getAllCharacters() { 
    List<Character> characterList = new ArrayList<Character>(); 
    String selectQuery = "SELECT * FROM " + TABLE_CHARACTERS; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    if (cursor.moveToFirst()) { 
     do { 
      Character character = new Character(); 
      character.set_id(Integer.parseInt(cursor.getString(0))); 
      character.set_apiKey(cursor.getString(1)); 
      character.set_keyId(cursor.getString(2)); 
     } while (cursor.moveToNext()); 
    } 
    return characterList; 
} 

是在方法中的代碼本身,我使用它的方式是

DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
List<Character> list = db.getAllCharacters(); 

,並試圖要求它toString()當我得到[]作爲值。

我可以看到正在創建的數據庫的條目,如here所示。

任何幫助將不勝感激,歡呼聲。

+2

你在哪裏添加'characterList'?爲什麼它不會是空的? – gonzo

+0

謝謝你再次證明我,在沒有睡覺的情況下編寫代碼是不行的。你有時需要一雙新的眼睛來處理這些愚蠢的問題。 – dubplay

回答

-1

請添加以下代碼

if (cursor.moveToFirst()) { 
    do { 
     Character character = new Character(); 
     character.set_id(Integer.parseInt(cursor.getString(0))); 
     character.set_apiKey(cursor.getString(1)); 
     character.set_keyId(cursor.getString(2)); 

     // add following 
     characterList.add(character); 

    } while (cursor.moveToNext()); 
} 

您創建角色的對象,但錯過了將其添加到ArrayList中即。在characterList中,這就是爲什麼它返回空列表。

0

當您在do部分創建了character變量後,您忘記了添加到您的characterList。最後在do內部添加一個characterList.add(character);,你應該很好。

希望這會有所幫助。