sql >> Base de Datos >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

Está intentando recuperar un elemento en el índice 2, pero este índice realmente no existe (el tamaño del cursor es 2, por lo que los índices son 0,1).

Cambia tu bucle:

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

Ahora debería funcionar correctamente.

Nota: No olvide llamar a moveToFirst() método que mueve el Cursor al primer registro (implícitamente se coloca antes de la primera fila) y lo prepara para la lectura. Este también es un método útil para probar si Cursor es válido o no.

Nota 2: No use índices de columna, simplemente puede cometer un error al contar. En lugar de usar nombres de columna, este enfoque generalmente se recomienda, p. cursor.getColumnIndex("<columnName>")