отображение номера контакта и телефона в флажке - PullRequest
0 голосов
/ 24 февраля 2012

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

@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  

1 Ответ

0 голосов
/ 24 февраля 2012

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

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

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

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

...