Pokoušíte se načíst položku na indexu 2, ale tento index ve skutečnosti neexistuje (velikost kurzoru je 2, takže indexy jsou 0,1).
Změňte smyčku:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Nyní by to mělo fungovat správně.
Poznámka: Nezapomeňte zavolat moveToFirst()
metoda, která přesune kurzor do prvního záznamu (implicitně je umístěn před prvním řádkem) a připraví jej pro čtení. Toto je také užitečná metoda pro testování, zda je kurzor platný nebo ne.
Poznámka 2: Nepoužívejte indexy sloupců, můžete jednoduše udělat chybu v počítání. Místo použití názvů sloupců - tento přístup se obecně doporučuje např. cursor.getColumnIndex("<columnName>")