2012-03-10 12 views
2

AndroidのAutoCompleteTextViewは、最初の文字を正しく入力したときにshow dropdownを表示します。文字列内に文字列を入力すると、ドロップダウンが表示されます。たとえば、 "January"は私の配列ですオートコンプリートフィールドに「anu」と入力すると、ドロップダウンで「1月」と表示されます。 ありがとうandroidのAutoCompleteTextView

+0

私はここに似た何かをやっているの! http://stackoverflow.com/questions/12854336/autocompletetextview-backed-by-cursorloader – toobsco42

答えて

1

あなた自身がFilterを書き、TextWatcherで添付している可能性があります。この応答はAutoCompleteTextViewで正規表現の例があります。Android AutoCompleteTextView with Regular Expression?、ここでは別の正規表現/ Javaの例である:How can I perform a partial match with java.util.regex.*?

EDIT:あなたがされるgetFilter()をオーバーライドして、カスタムフィルタを返すためにArrayAdapterを拡張する必要がありますが。

ですから、このような何か持ってしようとしている。

autoCompleteTextView.setAdapter(arrayAdapter); 
autoCompleteTextView.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     arrayAdapter.getFilter().filter(s); 
    } 
}); 

public class RegexFilter extends Filter{ 

    ArrayAdapter<String> mAdapter; 
    public RegexFilter(ArrayAdapter<String> adapter) { 
     mAdapter = adapter; 
    } 
... 
    @Override 
    protected FilterResults performFiltering(CharSequence constraint) { 
     Pattern p = Pattern.compile(constraint); 
     Matcher m = p.matcher(""); 
     List listOfMatches = new ArrayList<String>(); 
     for (String curMonth : months) { 
     m.reset(curMonth); 
     if (m.matches || m.hitEnd()) { 
      listOfMatches.add(curMonth); 
     } 
     } 
     FilterResults results = new FilterResults(); 
     results.values = listOfMatches; 
     results.count = listOfMatches.size(); 
     return results; 
    } 

    @Override 
    protected void publishResults(CharSequence constraint, FilterResults results) { 
     mAdapter.addAll(results.values); 
     mAdapter.notifyDataSetChanged(); 
    } 
} 

public class PartialArrayAdapter extends ArrayAdapter<String> { 
    ... 
    RegexFilter mFilter; 
    @Override 
    public TimedSuggestionFilter getFilter() { 
     if(null == mFilter) 
     mFilter = new RegexFilter(this); 
     return mFilter; 
    } 
+0

申し訳ありませんが、AutoCompleteTextView Class.myのsetFilter()およびgetFilter()関数を見つけることができません。アンドロイドAPIレベルは8です – pyus13

+0

@ pyus13が編集しました私のコード。申し訳ありませんが、getFilter()関数はArrayAdapterにあります。 ArrayAdapterの例を実行することをお勧めします(この例のようにhttp://sudarmuthu.com/blog/using-arrayadapter-and-listview-in-android-applications)。アダプターはAndroidの重要な部分です... –

関連する問題