SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException


Você está tentando recuperar um item no índice 2, mas esse índice realmente não existe (o tamanho do cursor é 2, portanto, os índices são 0,1).

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

Agora deve funcionar corretamente.

Observação: Não se esqueça de chamar moveToFirst() método que move Cursor para o primeiro registro (posicionado implicitamente antes da primeira linha) e o prepara para leitura. Este também é um método útil para testar se o Cursor é válido ou não.

Observação 2: Não use índices de coluna, você pode simplesmente cometer um erro na contagem. Em vez de usar nomes de coluna - essa abordagem geralmente é recomendada e.q. cursor.getColumnIndex("<columnName>")