Anda mencoba untuk mengambil item pada indeks 2 tetapi indeks ini benar-benar tidak ada (Ukuran kursor adalah 2 sehingga indeks adalah 0,1).
Ubah lingkaran Anda:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Sekarang seharusnya berfungsi dengan benar.
Catatan: Jangan lupa untuk memanggil moveToFirst()
metode yang memindahkan kursor ke catatan pertama (secara implisit diposisikan sebelum baris pertama) dan mempersiapkannya untuk dibaca. Ini juga merupakan metode praktis untuk menguji apakah Kursor valid atau tidak.
Catatan 2: Jangan gunakan indeks kolom, Anda bisa saja membuat kesalahan dalam menghitung. Alih-alih menggunakan nama kolom - pendekatan ini umumnya direkomendasikan e.q. cursor.getColumnIndex("<columnName>")