2012-01-27 15 views
4

連絡先の電話番号のために私のedittextフィールドオートコンプリートを作成しています。私はデータベースから連絡先を取得し、それらをテキストフィールドに表示する方法を知っていますが、私はユーザーがテキストフィールドに名前を入力する必要がある場合に自動完成する必要があります。私はどのようにオートコンプリートとそれの背後にある理論全体を取得する方法を理解しています。しかし、電話の連絡先から引き出す方法は難しいです。私は多くのチュートリアルやスタックオーバーフローに関するさまざまな質問を見たことがありますが、それでも困惑しています。コードスニペットが助けてくれます。連絡先の電話番号でオートコンプリートテキストビューを使用

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

+0

テキストメッセージ –

+0

があなたの問題を解決した場合、Androidの携帯電話の標準であるオートコンプリートのテキストビューと非常に似ていますか?解決したら回答を投稿して受け入れてください... – nKandel

答えて

3

は、連絡先を取得し、ArrayListに保管することです。次に、ArrayListをAutoComplete TextViewでバインドするだけです。その後、ユーザーがAutoComplete TextViewを入力すると、残りの部分がArrayListをフィルタリングするだけで簡単になります。

UPDATE

あなたはcontact_namecontact_numberのゲッター、セッターとPOJOクラスを作成することができます。次に、List<POJO> list = new ArrayList<POJO>();を作成します。それからちょうどlist使用POJOクラス

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

にCONTACT_NAMEとcontact_numberを追加し、最終的にはAdapterにこのlistを設定します。

そして、アダプタクラスで私はあなたがSDKでテストしていると思います

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

私は自分のコードを投稿しました。あなたが何を意味するかを私に見せることができると思いますか? –

+0

私は私の答えを編集しました。 –

+0

ありがとう、お試しください。私はここに投稿し、それが動作するかどうかを教えてくれます –

2

その可能性は、自動完全なテキストビューへのアダプタとして電話番号や連絡先名を供給するために動作しません。

このリンクは、この要件を満たすための良いチュートリアルです。より良い

Fetch Phone contacts and Show it in AutoComplete TextView in Android

+0

私のコードを掲載しました。それでも動作していないようですが、コンパイルエラーはありません。 –

0

使用してのTextViewに設定することができます。 SDKにはSIMカードがないため、動作しません。 .APKを電話に入れてもう一度やり直してください。それは魅力のように動作するはずです。

+0

私はhtcのインスピレーションでそれをテストしています。それは働いていませんか?あなたがそれを試したとき、あなたのために働いたのですか?それがあなたのために働くなら、それは助けになるでしょう。 –

+0

はい、私のSamsung Galaxy 3 Android 2.1で私のために働いた。 Btw、あなたは連絡先を抽出するより良い方法を持っているこのWebページを試すことができます.. [このリンクは神の仕事をする](http://coderzheaven.com/2011/06/get-all-details-from-contacts-アンドロイド/) –

関連する問題