MultiAutoCompleteTextView

public class MultiAutoCompleteTextView
extends AutoCompleteTextView

java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.EditText
         ↳ android.widget.AutoCompleteTextView
           ↳ android.widget.MultiAutoCompleteTextView


An editable text view, extending AutoCompleteTextView, that can show completion suggestions for the substring of the text where the user is typing instead of necessarily for the entire thing.

You must provide a MultiAutoCompleteTextView.Tokenizer to distinguish the various substrings.

The following code snippet shows how to create a text view which suggests various countries names while the user is typing:

 public class CountriesActivity extends Activity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.autocomplete_7);

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, COUNTRIES);
         MultiAutoCompleteTextView textView = findViewById(R.id.edit);
         textView.setAdapter(adapter);
         textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
     }

     private static final String[] COUNTRIES = new String[] {
         "Belgium", "France", "Italy", "Germany", "Spain"
     };
 }

Summary

Nested classes

class MultiAutoCompleteTextView.CommaTokenizer

This simple Tokenizer can be used for lists where the items are separated by a comma and one or more spaces. 

interface MultiAutoCompleteTextView.Tokenizer

 

Inherited XML attributes

Inherited constants

Inherited fields

Public constructors

MultiAutoCompleteTextView(Context context)
MultiAutoCompleteTextView(Context context, AttributeSet attrs)
MultiAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr)
MultiAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

boolean enoughToFilter()

Instead of filtering whenever the total length of the text exceeds the threshhold, this subclass filters only when the length of the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() meets or exceeds AutoCompleteTextView.getThreshold().

CharSequence getAccessibilityClassName()

Return the class name of this object to be used for accessibility purposes.

void performValidation()

Instead of validating the entire text, this subclass method validates each token of the text individually.

void setTokenizer(MultiAutoCompleteTextView.Tokenizer t)

Sets the Tokenizer that will be used to determine the relevant range of the text where the user is typing.

Protected methods

void performFiltering(CharSequence text, int keyCode)

Instead of filtering on the entire contents of the edit box, this subclass method filters on the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() if the length of that range meets or exceeds AutoCompleteTextView.getThreshold().

void performFiltering(CharSequence text, int start, int end, int keyCode)

Starts filtering the content of the drop down list.

void replaceText(CharSequence text)

Performs the text completion by replacing the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() by the the result of passing text through MultiAutoCompleteTextView.Tokenizer.terminateToken(CharSequence).

Inherited methods

Public constructors

MultiAutoCompleteTextView

added in API level 1
public MultiAutoCompleteTextView (Context context)

Parameters
context Context

MultiAutoCompleteTextView

added in API level 1
public MultiAutoCompleteTextView (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

MultiAutoCompleteTextView

added in API level 1
public MultiAutoCompleteTextView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

MultiAutoCompleteTextView

added in API level 21
public MultiAutoCompleteTextView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

defStyleRes int

Public methods

enoughToFilter

added in API level 1
public boolean enoughToFilter ()

Instead of filtering whenever the total length of the text exceeds the threshhold, this subclass filters only when the length of the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() meets or exceeds AutoCompleteTextView.getThreshold().

Returns
boolean

getAccessibilityClassName

added in API level 23
public CharSequence getAccessibilityClassName ()

Return the class name of this object to be used for accessibility purposes. Subclasses should only override this if they are implementing something that should be seen as a completely new class of view when used by accessibility, unrelated to the class it is deriving from. This is used to fill in AccessibilityNodeInfo.setClassName.

Returns
CharSequence

performValidation

added in API level 1
public void performValidation ()

Instead of validating the entire text, this subclass method validates each token of the text individually. Empty tokens are removed.

setTokenizer

added in API level 1
public void setTokenizer (MultiAutoCompleteTextView.Tokenizer t)

Sets the Tokenizer that will be used to determine the relevant range of the text where the user is typing.

Parameters
t MultiAutoCompleteTextView.Tokenizer

Protected methods

performFiltering

added in API level 1
protected void performFiltering (CharSequence text, 
                int keyCode)

Instead of filtering on the entire contents of the edit box, this subclass method filters on the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() if the length of that range meets or exceeds AutoCompleteTextView.getThreshold().

Parameters
text CharSequence: the filtering pattern

keyCode int: the last character inserted in the edit box; beware that this will be null when text is being added through a soft input method.

performFiltering

added in API level 1
protected void performFiltering (CharSequence text, 
                int start, 
                int end, 
                int keyCode)

Starts filtering the content of the drop down list. The filtering pattern is the specified range of text from the edit box. Subclasses may override this method to filter with a different pattern, for instance a smaller substring of text.

Parameters
text CharSequence

start int

end int

keyCode int

replaceText

added in API level 1
protected void replaceText (CharSequence text)

Performs the text completion by replacing the range from MultiAutoCompleteTextView.Tokenizer.findTokenStart(CharSequence, int) to TextView.getSelectionEnd() by the the result of passing text through MultiAutoCompleteTextView.Tokenizer.terminateToken(CharSequence). In addition, the replaced region will be marked as an AutoText substition so that if the user immediately presses DEL, the completion will be undone. Subclasses may override this method to do some different insertion of the content into the edit box.

Parameters
text CharSequence: the selected suggestion in the drop down list