2011-09-06 14 views
13

में वर्णमाला क्रम में संपर्कों को प्रदर्शित करने के लिए कैसे करें मेरे पास एक कस्टम सूची दृश्य है और मुझे संपर्कों को वर्णमाला क्रम में प्रदर्शित करने की आवश्यकता है क्या आप नमूना कोड प्रदान कर सकते हैं मैं इसे कैसे प्राप्त कर सकता हूं?लिस्टव्यू

उत्तर

39

आप इस तरह alphabatical क्रम में संपर्कों को प्राप्त कर सकते हैं:

Cursor cursor = getContentResolver.query(Phone.CONTENT_URI, null, null, null, Phone.DISPLAY_NAME + " ASC"); 

अधिक cearity के लिए इन लिंक का संदर्भ लें:

How to call Android contacts list?

How to get contacts from native phonebook in android

How to obtain all details of a contact in Android

How to get the first name and last name from Android contacts?

How to import contacts from phonebook to our application

Android contacts extraction

How to get all android contacts but without those which are on SIM

सूची के लिए आप इस ट्यूटोरियल उल्लेख कर सकते हैं:

http://www.vogella.de/articles/AndroidListView/article.html

+0

धन्यवाद आदमी! आप कमाल हैं: डी –

0

उपयोग इस कोड को पुनः प्राप्त करने के लिए संपर्क

ArrayList<HashMap<String,String>> contactData=new ArrayList<HashMap<String,String>>(); 
ContentResolver cr = getContentResolver(); 
    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    while (cursor.moveToNext()) { 
     try{ 
     String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
     if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
      Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
      while (phones.moveToNext()) { 
       String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       HashMap<String,String> map=new HashMap<String,String>(); 
       map.put("name", name); 
       map.put("number", phoneNumber); 
       contactData.add(map); 
      } 
      phones.close(); 
     } 
    }catch(Exception e){} 
    } 

अब संपर्क विवरण संपर्क डेटा ArrayList में संग्रहीत हैं। अब की तरह bellow

Collections.sort(contactData, new Comparator(){ 
       @Override 
       public int compare(Object o1, Object o2) { 
        HashMap map1=(HashMap)o1; 
        HashMap map2=(HashMap)o2; 
        String s1=(String)map1.get("name"); 
        String s2=(String)map2.get("name"); 
        return s1.compareTo(s2); 
       } 
      }); 

अब सम्पर्क करने का विवरण संपर्क डाटा ArrayList में छंटाई क्रम में जमा हो जाती है इस ArrayList छांटते हैं।

+0

यह काम करता है, लेकिन प्रत्येक संपर्क में डुप्लीकेट हैं – Gibs

0

मैं वर्णमाला हेडर को शामिल किया है संपर्क करने के लिए सूची

new ReadContactTask(context, showProgressDialog,new OnContactReadListener() { 
      @Override 
      public void onContactRead(List<ContactItem> dummyList) { 

       ArrayList<ContactItem> latestPhoneContacts = new ArrayList<>(); 

       if(dummyList!=null && dummyList.size()>0) 
       { 
        tvNoResult.setVisibility(View.GONE); 

        for(ContactItem contactItem : dummyList){ 
         String contactNameInCapital = ""; 
         if(contactItem.getContactName()!=null && contactItem.getContactName().length()>2){ 
          contactNameInCapital = contactItem.getContactName().substring(0,1).toUpperCase(); 

          if(contactNameInCapital.charAt(0) != previousContact.charAt(0)) 
          { 
           latestPhoneContacts.add(new ContactItem(contactNameInCapital.substring(0,1))); 
           latestPhoneContacts.add(contactItem); 
          } 
          else 
          { 
           latestPhoneContacts.add(contactItem); 
          } 

          previousContact = contactNameInCapital; 
         } 
        } 
        if(latestPhoneContacts!=null && latestPhoneContacts.size()>0) 
         contactListAdapter.addItems(latestPhoneContacts); 
       } 
      } 

      @Override 
      public void onContactEmpty() { 

      } 
     }).execute(); 

जहां

private String previousContact ="Zee"; 
+0

ContactItem क्या है – Gibs

0

आप ऐसा करने की जरूरत:

Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"); 
संबंधित मुद्दे