आप अनुक्रमणिका 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>")