2012-02-24 3 views
0

Я попробовал этот код, чтобы отобразить номера телефонов в флажке в ListView:отображения Контактов и телефонные номера в флажке

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main1); 
    lv = (ListView) findViewById(R.id.contactList); 

    Cursor numberCursor = null; 
    Cursor peopleCursor = getContentResolver().query(ContactsContract 
     .Contacts.CONTENT_URI,null,null 
      ,null,null); 

    String [] nb = null ; 
    String [] Tname = null; 

    if(peopleCursor.getCount()>0) 
    { 
     peopleCursor.moveToFirst(); 

     for(int i=0;i<peopleCursor.getCount();i++) 
     { 
      //get number 
      numberCursor=getContentResolver().query(ContactsContract 
       .CommonDataKinds.Phone.CONTENT_URI, 
       new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER} 
       ,ContactsContract.CommonDataKinds.Phone._ID+"="+peopleCursor 
       .getString(peopleCursor.getColumnIndex(ContactsContract.Contacts._ID)), 
       null,null); 
      numberCursor.moveToFirst(); 

      String number=numberCursor.getString(numberCursor 
        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      nb[i]=number; 

      //get name 
      String name=peopleCursor.getString(numberCursor 
       .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      Tname[i]=name; 

      peopleCursor.moveToNext();     
     } 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.contact_entry, numberCursor,nb, 
      new int[] {R.id.checkBox}); 

      lv.setAdapter(adapter); 

    } 

} 

Но я получаю эту ошибку в LogCat, и я не понимаю --->

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

ответ

0

Во-первых, я думаю, вы должны определить размер нб и TName, прежде чем использовать их:

 String[] Tname = new String[peopleCursor.getCount()]; 

     String[] nb = new String[numberCursor.getCount()]; 

Но я думаю проблемы с каждый человек в вашем списке контактов может есть один или несколько телефонных номеров. Итак, у вас должно быть две петли для peopleCursor и numberCursor. и ваш индекс (i в вашем коде) должен использоваться только для массива Tname.

+0

Да, я определяю размер nb и Tname, но всегда ту же ошибку ----> "android.database.CursorIndexOutOfBoundsException: указатель 0 запрошен, с размером 0" –

+0

i обновил свой ответ. – PhatHV

 Смежные вопросы

  • Нет связанных вопросов^_^