names.add(cursor.getString(i));
"i" कर्सर पंक्ति अनुक्रमणिका नहीं है, यह स्तंभ अनुक्रमणिका है। एक कर्सर पहले से ही एक विशिष्ट पंक्ति में स्थित है। यदि आपको अपने कर्सर की स्थिति बदलने की आवश्यकता है। कर्सर का उपयोग करें। ले जाएँ या ले जाएँ ToXXXX (दस्तावेज़ीकरण देखें)।
GetString/Int/Long आदि के लिए आपको बस कर्सर को यह बताना होगा कि आपको कौन सा कॉलम चाहिए। यदि आप कॉलम इंडेक्स को नहीं जानते हैं तो आप cursor.getColumnIndex("yourColumnName")
का उपयोग कर सकते हैं। .
आपका लूप इस तरह दिखना चाहिए:
public String[] getContacts(){
Cursor cursor = getReadableDatabase().rawQuery("SELECT name FROM contacts", null);
cursor.moveToFirst();
ArrayList<String> names = new ArrayList<String>();
while(!cursor.isAfterLast()) {
names.add(cursor.getString(cursor.getColumnIndex("name")));
cursor.moveToNext();
}
cursor.close();
return names.toArray(new String[names.size()]);
}