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>")