Vous essayez de récupérer un élément sur l'index 2 mais cet index n'existe pas vraiment (la taille du curseur est 2 donc les index sont 0,1).
Modifiez votre boucle :
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Maintenant, cela devrait fonctionner correctement.
Remarque : N'oubliez pas d'appeler moveToFirst()
méthode qui déplace Cursor dans le premier enregistrement (se positionne implicitement avant la première ligne) et le prépare pour la lecture. C'est aussi une méthode pratique pour tester si Cursor est valide ou non.
Remarque 2 : N'utilisez pas d'index de colonne, vous pouvez simplement faire une erreur de comptage. Au lieu d'utiliser des noms de colonnes - cette approche est généralement recommandée, par exemple. cursor.getColumnIndex("<columnName>")