2013-10-19 35 views
0

我想告訴所有聯繫人列表視圖詳細信息(如顯示標題名稱,電話號碼&圖片)誰擁有一個手機號碼在我的移動聯繫人列表中。我已經獲得了標題名稱,電話號碼。我按照this線程來實現列表中的照片。但沒有成功。安卓:顯示來自聯繫人的URI列表中的所有聯繫方式的有電話號碼的

要獲得顯示標題名稱,電話號碼我使用以下方法。嘗試使用相同查詢獲取圖像時出現錯誤。我可以在一個查詢中得到所有內容嗎?

public static ArrayList<Person> getAllContactsWithPhoto(Context context) { 

    ArrayList<Person> allContacts = new ArrayList<Person>(); 
    ContentResolver cr = context.getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
      null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur 
        .getColumnIndex(ContactsContract.Contacts._ID)); 

      if (Integer 
        .parseInt(cur.getString(cur 
          .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

       Cursor pCur = cr.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, ContactsContract.Data.CONTACT_ID + " = ?", 
         new String[] { id }, null); 

       while (pCur.moveToNext()) { 

        // fill object data 
        Person aPerson = new Person(); 
        aPerson.setName(pCur.getString(pCur 
          .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME))); 
        aPerson.setNumber(pCur.getString(pCur 
          .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

        // getting error in log cat. 
        Uri my_contact_Uri = Uri.withAppendedPath(
          ContactsContract.Contacts.CONTENT_URI, 
          String.valueOf(id)); 

        aPerson.setImage_Uri(my_contact_Uri); 

        Log.d(" Number List", 
          " " + aPerson.getName() + " " 
            + aPerson.getNumber() + " " 
            + aPerson.getImage_Uri()); 

        allContacts.add(aPerson); 
       } 
       pCur.close(); 
      } 
     } 
    } 
    return allContacts; 
} 

我的定義適配器ContactListAdapter getView()是這樣的:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      holder = new ViewHolder(); 

      convertView = inflater.inflate(R.layout.list_row, null); 
      convertView.setMinimumHeight(50); 

      holder.textViewContactName = (TextView) convertView 
        .findViewById(R.id.textview_contact_name); 
      holder.textView_Contact_Number = (TextView) convertView 
        .findViewById(R.id.textview_number); 
      holder.imgViewContactImage = (ImageView) convertView 
        .findViewById(R.id.imgViewContactImage); 

      convertView.setTag(holder); 

     } else 
      holder = (ViewHolder) convertView.getTag(); 

     if (allContactsNumbers.size() <= 0) { 
      holder.textViewContactName.setText("No Data"); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 

      String name = allContactsNumbers.get(position).getName(); 
      holder.textViewContactName.setText(name); 

      String number = allContactsNumbers.get(position).getNumber(); 
      holder.textView_Contact_Number.setText(number); 

      Uri Uri = allContactsNumbers.get(position).getImage_Uri(); 
      if (Uri != null) { 
       holder.imgViewContactImage.setImageURI(Uri); 
      } else { 
       holder.imgViewContactImage.setImageResource(R.id.useLogo); 
      } 

      Log.d("Contacts in Adapter", "" + name + "" + number); 

     } 
     return convertView; 
    } 

我的Person類:

public class Person { 
     // has setter & getter 
    private String name; 
    private String phone_number; 
    private Uri image_uri; } 

有人可以幫我解決這個問題?

+0

http://stackoverflow.com/questions/16730064/get-android-contact - 電話號碼列表。檢查這是否有幫助和這個http://stackoverflow.com/questions/17256932/displaying-contact-number-and-contact-name-in-a-custom-list-view/17258014#17258014 – Raghunandan

+0

@Raghunandan:wao。 .i可以獲得標題名稱和編號,但不會捕獲圖像以顯示在列表中:(該帖子不能幫助我更多 –

回答

0

要獲得圖像的Uri試試這個:

Uri my_contact_Uri = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); 

如果setImageURI(my_contact_Uri)不起作用試試這個:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),Uri.parse(my_contact_Uri)); 
+0

即將發佈您的反饋.. –

相關問題