SQLite
 sql >> Datenbank >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Sie versuchen, ein Element auf Index 2 abzurufen, aber dieser Index existiert wirklich nicht (Cursorgröße ist 2, also sind Indizes 0,1).

Ändern Sie Ihre Schleife:

if (result != null && result.moveToFirst()){
    do {
       Post post = new Post();
       post.setPostId(result.getInt(0));
       posts.add(post);
       ....
    } while (result.moveToNext());
}

Jetzt sollte es richtig funktionieren.

Hinweis: Vergessen Sie nicht, moveToFirst() aufzurufen Methode, die den Cursor in den ersten Datensatz bewegt (ist implizit vor der ersten Zeile positioniert) und zum Lesen vorbereitet. Dies ist auch eine praktische Methode, um zu testen, ob der Cursor gültig ist oder nicht.

Anmerkung 2: Verwenden Sie keine Spaltenindizes, Sie können einfach einen Fehler beim Zählen machen. Anstatt Spaltennamen zu verwenden - dieser Ansatz wird allgemein empfohlen, z. cursor.getColumnIndex("<columnName>")