Bạn đang cố gắng truy xuất một mục trên chỉ mục 2 nhưng chỉ mục này thực sự không tồn tại (Kích thước con trỏ là 2 nên chỉ mục là 0,1).
Thay đổi vòng lặp của bạn:
if (result != null && result.moveToFirst()){
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result.moveToNext());
}
Bây giờ nó sẽ hoạt động chính xác.
Lưu ý: Đừng quên gọi moveToFirst()
phương thức di chuyển Con trỏ vào bản ghi đầu tiên (ngầm định được đặt trước hàng đầu tiên) và chuẩn bị cho việc đọc. Đây cũng là một phương pháp tiện dụng để kiểm tra xem Con trỏ có hợp lệ hay không.
Lưu ý 2: Không sử dụng chỉ mục cột, bạn có thể mắc lỗi khi đếm. Thay vì sử dụng tên cột - phương pháp này thường được khuyến nghị e.q. cursor.getColumnIndex("<columnName>")