インデックス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>")