Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2

Below is my codes and I got the android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2 error. Can anyone tell me how to solve it?

ContentResolver cr = getContentResolver();
  Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
    null, null, null, null);
  if (Integer.parseInt(cur.getString(
    cur.getColumnIndex(People.PRIMARY_PHONE_ID))) > 0) {

   Cursor pCur = cr.query(
     Contacts.Phones.CONTENT_URI, 
     null, 
     Contacts.Phones.PERSON_ID +" = ?", 
     new String[]{id}, null);
   int i=0;
   int pCount = pCur.getCount();
   String[] phoneNum = new String[pCount];
   String[] phoneType = new String[pCount];
   while (pCur.moveToNext()) {
    phoneNum[i] = pCur.getString(
      pCur.getColumnIndex(Contacts.Phones.NUMBER));
    phoneType[i] = pCur.getString(
      pCur.getColumnIndex(Contacts.Phones.TYPE));
    i++;
   } 
  }
 }
}
like image 948
user596379 Avatar asked Jan 31 '11 05:01

user596379


1 Answers

If you are accessing data from Cursor object than you must have to position the Cursor object.

Actually you have to position Cursor to the first row before you try to access data from it.

Put the line cur.moveToFirst(); after the line Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); in your code.

And also ensure that you are not using and older API for retrieving Contacts.

like image 177
Vikas Patidar Avatar answered Oct 21 '22 07:10

Vikas Patidar