отображать имя и номер контакта в моем собственном представлении списка с помощью Android 2.1 - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь восстановить все имена контактов и их номера в своем собственном представлении списка. я могу получить все имя, но когда я пытаюсь получить номер телефона, он будет отображать один и тот же номер для меня при каждом контакте.

, где число получает значение 1 из HAS_PHONE_NUMBER

мой код

if (number > 0) {
            Cursor phones = managedQuery(
                         ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID , 
                         null, null);

startManagingCursor(phones);
             phones.moveToFirst();  

       String cNumber = phones.phones.getString(phones.getColumnIndex("data1"));  
       cache.nameView.setText(cache.nameBuffer.data, 0, size);
     cache.numView.setText(cNumber);

}

Заранее спасибо ..

Ответы [ 3 ]

0 голосов
/ 03 ноября 2011

вам нужно установить цикл while или for. In для кода, который вы используете, если в основном он используется для условия, которое не может увеличить ваше значение числа varable. подсчитать общее количество имен u fetch это имя переменной totalNumber_name

if (number == totalNumber_name) {
        Cursor phones = managedQuery(
                     ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                     ContactsContract.CommonDataKinds.Phone.CONTACT_ID , 
                     null, null);

startManagingCursor(phones);
         phones.moveToFirst();  

   String cNumber = phones.phones.getString(phones.getColumnIndex("data1"));  
   cache.nameView.setText(cache.nameBuffer.data, 0, size);
 cache.numView.setText(cNumber);
number++;
}

может быть, это работа

0 голосов
/ 30 марта 2013

Попробуйте этот код, он отлично работает в моем приложении.

while (c.moveToNext ())

    {
        contactName = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        contactID = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
        if (Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
            Cursor pCur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { contactID },null);
            while (pCur.moveToNext()) {
                contactTelNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            } 
        }

          Log.i("name ", contactName + " ");
        Log.i("number ", contactTelNumber + " ");
0 голосов
/ 03 ноября 2011

Попробуйте это:

        //get all contacts
        Cursor peopleCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null,null, null);

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

            for(int i=0;i<peopleCursor.getCount();i++)
            {  
               if(check for HAS_PHONE_NUMBER)
               {
                   //get number
                   Cursor 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(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                   //get name
                   String name=peopleCursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

                   peopleCursor.moveToNext();                   
               }
            }
       }      
...