2013-04-24 77 views
0

我正在使用聯繫人提供程序獲取所有電話號碼和姓名,並將其顯示在列表視圖中。如何在列表視圖中顯示手機通訊錄

在我的手機中有近4500個聯繫人。

加載所有姓名和電話號碼需要將近2-3分鐘。

任何建議如何減少加載時間

感謝 Ajeet

+0

不要加載'PO到POJO使用CursorAdapter ... – Selvin 2013-04-24 11:47:38

回答

1

您可以使用content provider這個

ListAdapter list; 
     list=readContacts(); 
     ListView lv=(ListView) findViewById(R.id.listView1); 
     lv.setAdapter(list); 

而且readContacts()

public ListAdapter readContacts(){ 
     ContentResolver cr = getContentResolver(); 
     ListAdapter cd = new ArrayList<Contact_getActivity>(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, ContactsContract.Contacts.DISPLAY_NAME); 

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

        // get the phone number 
        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
          new String[]{id}, null); 
        while (pCur.moveToNext()) { 
         String phone = pCur.getString(
           pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         //       if (!Utils.isEmpty(phone)) { 
         //        cd.add(new ContactData(id, name, phone)); 
         //       } 
        } 
        pCur.close(); 


       } 
      } 
     } 
     return cd; 

    } 
+0

順便說一句我建議在用戶單擊後,在不同的視圖中爲聯繫人加載其他信息。我嘗試過嵌套的內容提供者查詢,即使沒有那麼多的聯繫人,他們的速度也非常慢 – 2013-04-24 11:56:42

0

我知道這不是廣告直接回答您的問題,但您可以加載一定數量的聯繫人,將其顯示在列表中,然後在後臺加載其餘聯繫人thread。當用戶使用例如20聯繫人滾動到列表的末尾時,可以添加新加載的20聯繫人。我認爲這種技術被稱爲paging但我不確定:)

0

您應該看看Loaders,因爲它們可以很容易地異步加載活動或片段中的數據!它具有許多優點,正如文件here中明確提到的那樣。該文檔也有加載聯繫人的示例。

0

一次只顯示幾個聯繫人(假設有100個聯繫人)。 當用戶向下滾動列表時,加載另一個100等等。 就像Facebook的新功能。 它會一次加載幾條新聞,並在您向下滾動時加載另一條新聞。

根據我這是優化您的應用程序的最佳選擇。

相關問題