Próbujesz pobrać element z indeksu 2, ale ten indeks naprawdę nie istnieje (rozmiar kursora to 2, więc indeksy wynoszą 0,1).
Zmień swoją pętlę:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Teraz powinno działać poprawnie.
Uwaga: Nie zapomnij wywołać moveToFirst()
metoda, która przenosi kursor do pierwszego rekordu (domyślnie jest umieszczony przed pierwszym wierszem) i przygotowuje go do odczytu. Jest to również przydatna metoda sprawdzania, czy Cursor jest prawidłowy, czy nie.
Uwaga 2: Nie używaj indeksów kolumn, możesz po prostu popełnić błąd w liczeniu. Zamiast używać nazw kolumn - to podejście jest ogólnie zalecane, np. cursor.getColumnIndex("<columnName>")