Опитвате се да извлечете елемент от индекс 2, но този индекс наистина не съществува (Размерът на курсора е 2, така че индексите са 0,1).
Променете своя цикъл:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Сега трябва да работи правилно.
Забележка: Не забравяйте да извикате moveToFirst()
метод, който премества курсора в първия запис (имплицитно се позиционира преди първия ред) и го подготвя за четене. Това също е удобен метод за тестване дали курсорът е валиден или не.
Забележка 2: Не използвайте индекси на колони, можете просто да направите грешка при броенето. Вместо да използвате имена на колони - този подход обикновено се препоръчва напр. cursor.getColumnIndex("<columnName>")