2016-09-15 3 views
0

CONTACTS電子メールアドレスの一致する選択肢を入力する可能性のあるフォームにAutoCompleteTextViewフィールドを作成しています。連絡先電子メールのAutoCompleteTextViewがLIKEを正常に動作させることができない

ここでいくつかの古い例を見つけることができました(これは償却されたコードをたくさん持っています...もっと新しいものではありません)。しかし試行錯誤の中で私はそれを最初の文字にマッチさせることができました。私がタイプする電子メールアドレス...私は正確にどのように動作するのかについて100%理解していませんが、

私が本当にやりたいことは、ファイルの電子メールアドレスにも一致するものがあることです。私はそれを理解したように、私は、クエリでLIKEコマンドを使用する必要が

など、[email protected][email protected][email protected][email protected]:それは私がgmaを入力した場合、私はそれを表示したいと思い、です。しかし、どのように書式を設定しても、同じ結果が得られます...電子メールアドレスの先頭にのみ一致します。ここではLIKEと私の現在のコードの試みがある

....

ArrayList<String> emailAddressCollection = new ArrayList<String>(); 
    ContentResolver cr = getContentResolver(); 
    String[] projection={ContactsContract.CommonDataKinds.Email.DATA}; 
    Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Email.ADDRESS + " LIKE '%A%'", null, null); 
    while (emailCur.moveToNext()) 
    { 
     String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
     emailAddressCollection.add(email); 
    } 
    emailCur.close(); 
    String[] emailAddresses = new String[emailAddressCollection.size()]; 
    emailAddressCollection.toArray(emailAddresses); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, emailAddresses); 

    AutoCompleteTextView actextView = (AutoCompleteTextView)findViewById(idTo); 
    actextView.setAdapter(adapter); 

私がここで行方不明です何を任意のアイデア?

また、私のドロップダウンリストには、もう少し関連した質問があります。メールアドレスとそのレコードに記載されているNAMEを表示し、選択時にメールアドレスを返すだけです。

このコードを使用してこれを行うことはできますか、それとも別のものを見る必要がありますか?

答えて

0

AutoCompleteTextViewは、デフォルトで開始文字のみに基づいて一致するように設計されています。そのため[email protected]gmaは認識されません。 'LIKE'基準に基づいてルックアップを行う独自のウィジェットを実装することができます。 Androidは、アダプタ要素の各エントリの最初の数文字だけを検索します。

「LIKE」基準で検索する必要がある場合は、それ自体がかなりの作業になりますが、可能です。文字列にテキストが含まれているかどうかで簡単に検索し、それをフィルタリングすることができます。毎回クエリする必要はありません。また、これを行うライブラリを検索することもできます。

+0

いいえ、AutoCompleteTextViewは、デフォルトでは開始文字 "' 'に基づいて一致するようにデフォルトで設計されていますが、使用されている' 'Adapter'(より正確には' 'Filter''その「アダプタ」によって) – pskink

+0

それでは、アダプタの問題、フィルタの問題、または何か他の問題がありますか?私はこれを行うことができます知っている、電子メールアドレスの任意の部分を入力すると、GMAILアプリケーションでもそれを行います。 – Peter

+0

@Peterは 'SimpleCursorAdapter'を使用し、その' FilterQueryProvider'を設定します – pskink

関連する問題