2017-10-24 7 views
-2

Dieser Code-Schnipsel Ich versuche, alle Zeilen der Noten-Tabelle abzurufen, aber während der Ausführung gibt die Anzahl der Zeilen korrekt sind, aber alle sind wie die letzte Zeile .. Ich möchte den Fehler wissen, wasWas ist der Fehler in ArrayList add() -Methode?

public ArrayList<Note> selectAllNotes() { 
    Cursor cursor = dbReader.rawQuery("SELECT * FROM notes", null); 
    Note note = new Note(); 
    ArrayList<Note> notes = new ArrayList<>(); 
    while (cursor.moveToNext()) { 
     note.setNoteID(cursor.getInt(cursor.getColumnIndex(DbHelper.ID))); 
     note.setNoteTitle(cursor.getString(cursor.getColumnIndex(DbHelper.TITLE))); 
     note.setNoteContent(cursor.getString(cursor.getColumnIndex(DbHelper.CONTENT))); 
     notes.add(note); 
    } 
    return notes; 
} 
+0

move your Note Anmerkung = new Note(); nach innen während der Schleife. Alle Inhalte der Liste beziehen sich auf dasselbe Objekt. – Jimmy

+2

Mögliches Duplikat von [Warum enthält meine ArrayList N Kopien des zuletzt zur Liste hinzugefügten Objekts?] (Https://stackoverflow.com/questions/19843506/why-does-my-arraylist-contain-n-copies-of -der-letzte-Artikel-hinzugefügt-zur-Liste) –

Antwort

0

Verschieben Note note = new Note(); kurz nach while (cursor.moveToNext()) {.

Obwohl dies nicht der richtige Ort für die Frage "Warum funktioniert mein Code nicht?"

+0

Danke mein Bruder .. es funktioniert mit mir, aber ich verstehe nicht, "Obwohl dies nicht der richtige Ort ist zu fragen", warum mein Code nicht funktioniert? "" Was ist der richtige Ort? !!! – amralsaidy

+0

Entschuldigung Freund, meine Schuld. Wie hier https://stackoverflow.com/help/on-topic geschrieben ist deine Frage vollkommen legitim und wohlgeformt. –

0

nur Ihre Note bewegen sich in der Schleife zu initialisieren und auch

`

if(cursor.getCount>0){ 
cursor.moveToFirst() 
while(!cursor.isAfterLast()){ 
Note note=new Note(); 
.... 
} 
} 

`

vor accesing Cursor, wie mit Ihrem Code zu verwenden, versuchen Sie nicht die ersten Daten haben vom Cursor, da es sich bereits zum nächsten bewegt.

Verwandte Themen