U probeert een item op index 2 op te halen, maar deze index bestaat niet echt (cursorgrootte is 2, dus indexen zijn 0,1).
Verander je loop:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Nu zou het correct moeten werken.
Opmerking: Vergeet niet moveToFirst()
. aan te roepen methode die de cursor naar de eerste record verplaatst (impliciet vóór de eerste rij wordt geplaatst) en deze voorbereidt op het lezen. Dit is ook een handige methode om te testen of Cursor geldig is of niet.
Opmerking 2: Gebruik geen kolomindexen, u kunt gewoon een fout maken bij het tellen. In plaats van kolomnamen te gebruiken - deze benadering wordt over het algemeen aanbevolen e.q. cursor.getColumnIndex("<columnName>")