2012-01-27 95 views
4

我有我的edittext字段自動完成聯繫人的電話號碼。我知道如何從數據庫中獲取聯繫人並將其顯示在文本字段中,但我需要他們自動完成,以便用戶想要在文本字段中輸入名稱。我明白如何讓數組自動完成,以及背後的全部理論。但是如何從手機通訊錄中拉出很困難。我已經看過很多教程,還有關於堆棧溢出的各種問題,但仍然很難。代碼snippit將有助於請。使用自動完成textview與聯繫人電話號碼

public class MyContacts extends Activity { 

    AutoCompleteTextView txtPhoneNo; 

    public ArrayList<String> c_Name = new ArrayList<String>(); 
    public ArrayList<String> c_Number = new ArrayList<String>(); 
    String[] name_Val = null; 
    String[] phone_Val = null; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     txtPhoneNo = (AutoCompleteTextView) findViewById(R.id.txtPhoneNo); 

    } 

    Uri contacts = Uri.parse("content://icc/adn"); 
    ContentResolver cr = getContentResolver(); 

    Cursor managedCursor1 = cr.query(contacts, null, null, null, null); 
    { 
     if (managedCursor1.moveToFirst()) { 

      String contactname; 
      String cphoneNumber; 

      int nameColumn = managedCursor1.getColumnIndex("name"); 
      int phoneColumn = managedCursor1.getColumnIndex("number"); 

      Log.d("int Name", Integer.toString(nameColumn)); 
      Log.d("int Number", Integer.toString(phoneColumn)); 

      do { 
       // Get the field values 
       contactname = managedCursor1.getString(nameColumn); 
       cphoneNumber = managedCursor1.getString(phoneColumn); 
       if ((contactname != " " || contactname != null) 
         && (cphoneNumber != " " || cphoneNumber != null)) { 

        c_Name.add(contactname); 
        c_Number.add(cphoneNumber); 
       } 

      } while (managedCursor1.moveToNext()); 
     } 
     name_Val = (String[]) c_Name.toArray(new String[c_Name.size()]); 
     phone_Val = (String[]) c_Number.toArray(new String[c_Name.size()]); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, name_Val); 
     txtPhoneNo.setAdapter(adapter); 
    } 
} 

我的代碼...沒有編譯錯誤,但仍然無法正常工作

+0

你能表達一下你想做什麼嗎? – Richa 2012-01-27 05:19:20

+0

東西非常類似,對任何Android手機標準的自動完成textview,當你短信 – 2012-01-27 18:27:14

+0

你解決了你的問題?如果解決然後發佈你的答案並接受它... – nKandel 2012-09-24 03:47:07

回答

3
更好

將獲取聯繫人並將其存儲在ArrayList。然後,您可以將ArrayList與AutoComplete TextView綁定。然後,當用戶鍵入AutoComplete TextView時,該部分的其餘部分很容易過濾ArrayList。

UPDATE

您可以創建一個POJO類與contact_namecontact_number消氣制定者。然後創建List<POJO> list = new ArrayList<POJO>();。然後,只需將CONTACT_NAME和contact_number添加到list使用POJO

POJO pojo_obj = new POJO(); 
pojo_obj.setcontact_name(contactname); 
pojo_obj.setcontact_number(cphoneNumber); 
list.add(pojo_obj); 

最後設置此listAdapter

然後在適配器類,你可以用它

list.get(position).getcontact_name(); 
list.get(position).getcontact_number(); 
+0

我發佈了我的代碼,你覺得你可能能告訴我你的意思嗎? – 2012-01-30 01:27:03

+0

我編輯了我的答案。 – 2012-01-30 04:55:11

+0

謝謝,生病試試。我會張貼在這裏,並告訴你,如果它的工作 – 2012-02-02 03:58:54

2

它可能提供的電話號碼或聯繫人姓名時,適配器自動完成文本視圖。

下面的鏈接爲您提供了一個很好的教程來達到這個要求。

Fetch Phone contacts and Show it in AutoComplete TextView in Android

+0

我張貼我的代碼。它似乎仍然不起作用,但沒有編譯錯誤。 – 2012-01-30 01:28:12

0

我想你在SDK正在測試設置爲TextView的。 SDK沒有SIM卡,因此無法工作。將.APK放入手機中,然後重試。它應該像魅力一樣工作。

+0

我一直在測試它對我的htc啓發。它沒有工作?如果你嘗試過它,它是否適合你?如果它對你有用,那麼這將有所幫助。 – 2012-02-19 20:22:41

+0

是的,在我的三星Galaxy 3 Android 2.1中爲我工作。 順便說一句,你可以嘗試這個網頁,有更好的方式提取聯繫人.. [這個鏈接是一個上帝的工作](http://coderzheaven.com/2011/06/get-all-details-from-contacts-在-機器人/) – 2012-02-20 16:55:06

相關問題