SQLite
 sql >> Database >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Stai tentando di recuperare un elemento sull'indice 2 ma questo indice in realtà non esiste (la dimensione del cursore è 2, quindi gli indici sono 0,1).

Cambia il tuo ciclo:

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

Ora dovrebbe funzionare correttamente.

Nota: Non dimenticare di chiamare moveToFirst() metodo che sposta Cursor nel primo record (implicitamente posizionato prima della prima riga) e lo prepara per la lettura. Questo è anche un metodo utile per verificare se il cursore è valido o meno.

Nota 2: Non utilizzare indici di colonna, puoi semplicemente fare un errore nel conteggio. Invece di utilizzare i nomi delle colonne, questo approccio è generalmente consigliato e.q. cursor.getColumnIndex("<columnName>")