public class

AutoCompleteTextView

extends EditText
implements Filter.FilterListener
java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.EditText
         ↳ android.widget.AutoCompleteTextView
Known Direct Subclasses

Class Overview

An editable text view that shows completion suggestions automatically while the user is typing. The list of suggestions is displayed in a drop down menu from which the user can choose an item to replace the content of the edit box with.

The drop down can be dismissed at any time by pressing the back key or, if no item is selected in the drop down, by pressing the enter/dpad center key.

The list of suggestions is obtained from a data adapter and appears only after a given number of characters defined by the threshold.

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 icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.countries);

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, COUNTRIES);
         AutoCompleteTextView textView = (AutoCompleteTextView)
                 findViewById(R.id.countries_list);
         textView.setAdapter(adapter);
     }

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

Summary

Nested Classes
public class AutoCompleteTextView.Validator This interface is used to make sure that the text entered in this TextView complies to a certain format. 
XML Attributes
Attribute Name Related Method Description
android:completionHint setCompletionHint(CharSequence) Defines the hint displayed in the drop down menu. 
android:completionHintView Defines the hint view displayed in the drop down menu. 
android:completionThreshold setThreshold(int) Defines the number of characters that the user must type before completion suggestions are displayed in a drop down menu. 
android:dropDownAnchor View to anchor the auto-complete dropdown to. 
android:dropDownSelector Selector in a drop down list. 
android:dropDownWidth Specifies the basic width of the dropdown. 
[Expand]
Inherited XML Attributes
From class android.widget.TextView
From class android.view.View
[Expand]
Inherited Constants
From class android.view.View
Public Constructors
AutoCompleteTextView(Context context)
AutoCompleteTextView(Context context, AttributeSet attrs)
AutoCompleteTextView(Context context, AttributeSet attrs, int defStyle)
Public Methods
void clearListSelection()

Clear the list selection.

void dismissDropDown()

Closes the drop down if present on screen.

boolean enoughToFilter()
Returns true if the amount of text in the field meets or exceeds the getThreshold() requirement.
ListAdapter getAdapter()

Returns a filterable list adapter used for auto completion.

int getDropDownAnchor()

Returns the id for the view that the auto-complete drop down list is anchored to.

int getDropDownWidth()

Returns the current width for the auto-complete drop down list.

AdapterView.OnItemClickListener getItemClickListener()
This method is deprecated. Use getOnItemClickListener() intead
AdapterView.OnItemSelectedListener getItemSelectedListener()
This method is deprecated. Use getOnItemSelectedListener() intead
int getListSelection()
Get the position of the dropdown view selection, if there is one.
AdapterView.OnItemClickListener getOnItemClickListener()

Returns the listener that is notified whenever the user clicks an item in the drop down list.

AdapterView.OnItemSelectedListener getOnItemSelectedListener()

Returns the listener that is notified whenever the user selects an item in the drop down list.

int getThreshold()

Returns the number of characters the user must type before the drop down list is shown.

AutoCompleteTextView.Validator getValidator()
Returns the Validator set with setValidator(AutoCompleteTextView.Validator), or null if it was not set.
boolean isPerformingCompletion()
Identifies whether the view is currently performing a text completion, so subclasses can decide whether to respond to text changed events.
boolean isPopupShowing()

Indicates whether the popup menu is showing.

void onCommitCompletion(CompletionInfo completion)
Called by the framework in response to a text completion from the current input method, provided by it calling InputConnection.commitCompletion().
void onFilterComplete(int count)

Notifies the end of a filtering operation.

boolean onKeyDown(int keyCode, KeyEvent event)
Default implementation of KeyEvent.Callback.onKeyMultiple(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.
boolean onKeyPreIme(int keyCode, KeyEvent event)
Handle a key event before it is processed by any input method associated with the view hierarchy.
boolean onKeyUp(int keyCode, KeyEvent event)
Default implementation of KeyEvent.Callback.onKeyMultiple(): perform clicking of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released.
void onWindowFocusChanged(boolean hasWindowFocus)
Called when the window containing this view gains or loses focus.
void performCompletion()

Performs the text completion by converting the selected item from the drop down list into a string, replacing the text box's content with this string and finally dismissing the drop down menu.

void performValidation()
If a validator was set on this view and the current string is not valid, ask the validator to fix it.
<T extends ListAdapter & Filterable> void setAdapter(T adapter)

Changes the list of data used for auto completion.

void setCompletionHint(CharSequence hint)

Sets the optional hint text that is displayed at the bottom of the the matching list.

void setDropDownAnchor(int id)

Sets the view to which the auto-complete drop down list should anchor.

void setDropDownWidth(int width)

Sets the current width for the auto-complete drop down list.

void setListSelection(int position)
Set the position of the dropdown view selection.
void setOnItemClickListener(AdapterView.OnItemClickListener l)

Sets the listener that will be notified when the user clicks an item in the drop down list.

void setOnItemSelectedListener(AdapterView.OnItemSelectedListener l)

Sets the listener that will be notified when the user selects an item in the drop down list.

void setThreshold(int threshold)

Specifies the minimum number of characters the user has to type in the edit box before the drop down list is shown.

void setValidator(AutoCompleteTextView.Validator validator)
Sets the validator used to perform text validation.
void showDropDown()

Displays the drop down on screen.

Protected Methods
CharSequence convertSelectionToString(Object selectedItem)

Converts the selected item from the drop down list into a sequence of character that can be used in the edit box.

Filter getFilter()
Returns the Filter obtained from getFilter(), or null if setAdapter(T) was not called with a Filterable.
void onAttachedToWindow()
This is called when the view is attached to a window.
void onDetachedFromWindow()
This is called when the view is detached from a window.
void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect)
Called by the view system when the focus state of this view changes.
void performFiltering(CharSequence text, int keyCode)

Starts filtering the content of the drop down list.

void replaceText(CharSequence text)

Performs the text completion by replacing the current text by the selected item.

boolean setFrame(int l, int t, int r, int b)
Assign a size and position to this view.
[Expand]
Inherited Methods
From class android.widget.EditText
From class android.widget.TextView
From class android.view.View
From class java.lang.Object
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.ViewTreeObserver.OnPreDrawListener
From interface android.widget.Filter.FilterListener

XML Attributes

android:completionHint

Defines the hint displayed in the drop down menu.

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol completionHint.

android:completionHintView

Defines the hint view displayed in the drop down menu.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol completionHintView.

Related Methods

android:completionThreshold

Defines the number of characters that the user must type before completion suggestions are displayed in a drop down menu.

Must be an integer value, such as "100".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol completionThreshold.

Related Methods

android:dropDownAnchor

View to anchor the auto-complete dropdown to. If not specified, the text view itself is used.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol dropDownAnchor.

Related Methods

android:dropDownSelector

Selector in a drop down list.

May be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

This corresponds to the global attribute resource symbol dropDownSelector.

Related Methods

android:dropDownWidth

Specifies the basic width of the dropdown. Its value may be a dimension (such as "12dip") for a constant width, fill_parent to fill the width of the screen, or wrap_content to match the width of the anchored view.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), mm (millimeters).

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

May be one of the following constant values.

ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen.
wrap_content-2 The dropdown should fit the width of its anchor.

This corresponds to the global attribute resource symbol dropDownWidth.

Related Methods

Public Constructors

public AutoCompleteTextView (Context context)

public AutoCompleteTextView (Context context, AttributeSet attrs)

public AutoCompleteTextView (Context context, AttributeSet attrs, int defStyle)

Public Methods

public void clearListSelection ()

Clear the list selection. This may only be temporary, as user input will often bring it back.

public void dismissDropDown ()

Closes the drop down if present on screen.

public boolean enoughToFilter ()

Returns true if the amount of text in the field meets or exceeds the getThreshold() requirement. You can override this to impose a different standard for when filtering will be triggered.

public ListAdapter getAdapter ()

Returns a filterable list adapter used for auto completion.

Returns
  • a data adapter used for auto completion

public int getDropDownAnchor ()

Returns the id for the view that the auto-complete drop down list is anchored to.

Returns
  • the view's id, or NO_ID if none specified

public int getDropDownWidth ()

Returns the current width for the auto-complete drop down list. This can be a fixed width, or FILL_PARENT to fill the screen, or WRAP_CONTENT to fit the width of its anchor view.

Returns
  • the width for the drop down list

public AdapterView.OnItemClickListener getItemClickListener ()

This method is deprecated.Use getOnItemClickListener() intead

Returns the listener that is notified whenever the user clicks an item in the drop down list.

Returns
  • the item click listener

public AdapterView.OnItemSelectedListener getItemSelectedListener ()

This method is deprecated.Use getOnItemSelectedListener() intead

Returns the listener that is notified whenever the user selects an item in the drop down list.

Returns
  • the item selected listener

public int getListSelection ()

Get the position of the dropdown view selection, if there is one. Returns ListView.INVALID_POSITION if there is no dropdown or if there is no selection.

Returns

public AdapterView.OnItemClickListener getOnItemClickListener ()

Returns the listener that is notified whenever the user clicks an item in the drop down list.

Returns
  • the item click listener

public AdapterView.OnItemSelectedListener getOnItemSelectedListener ()

Returns the listener that is notified whenever the user selects an item in the drop down list.

Returns
  • the item selected listener

public int getThreshold ()

Returns the number of characters the user must type before the drop down list is shown.

Returns
  • the minimum number of characters to type to show the drop down

public boolean isPerformingCompletion ()

Identifies whether the view is currently performing a text completion, so subclasses can decide whether to respond to text changed events.

public boolean isPopupShowing ()

Indicates whether the popup menu is showing.

Returns
  • true if the popup menu is showing, false otherwise

public void onCommitCompletion (CompletionInfo completion)

Called by the framework in response to a text completion from the current input method, provided by it calling InputConnection.commitCompletion(). The default implementation does nothing; text views that are supporting auto-completion should override this to do their desired behavior.

Parameters
completion The auto complete text the user has selected.

public void onFilterComplete (int count)

Notifies the end of a filtering operation.

Parameters
count the number of values computed by the filter

public boolean onKeyDown (int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyMultiple(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

Parameters
keyCode A key code that represents the button pressed, from KeyEvent.
event The KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public boolean onKeyPreIme (int keyCode, KeyEvent event)

Handle a key event before it is processed by any input method associated with the view hierarchy. This can be used to intercept key events in special situations before the IME consumes them; a typical example would be handling the BACK key to update the application's UI instead of allowing the IME to see it and close itself.

Parameters
keyCode The value in event.getKeyCode().
event Description of the key event.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public boolean onKeyUp (int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyMultiple(): perform clicking of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released.

Parameters
keyCode A key code that represents the button pressed, from KeyEvent.
event The KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public void onWindowFocusChanged (boolean hasWindowFocus)

Called when the window containing this view gains or loses focus. Note that this is separate from view focus: to receive key events, both your view and its window must have focus. If a window is displayed on top of yours that takes input focus, then your own window will lose focus but the view focus will remain unchanged.

Parameters
hasWindowFocus True if the window containing this view now has focus, false otherwise.

public void performCompletion ()

Performs the text completion by converting the selected item from the drop down list into a string, replacing the text box's content with this string and finally dismissing the drop down menu.

public void performValidation ()

If a validator was set on this view and the current string is not valid, ask the validator to fix it.

public void setAdapter (T adapter)

Changes the list of data used for auto completion. The provided list must be a filterable list adapter.

The caller is still responsible for managing any resources used by the adapter. Notably, when the AutoCompleteTextView is closed or released, the adapter is not notified. A common case is the use of CursorAdapter, which contains a Cursor that must be closed. This can be done automatically (see startManagingCursor()), or by manually closing the cursor when the AutoCompleteTextView is dismissed.

Parameters
adapter the adapter holding the auto completion data

public void setCompletionHint (CharSequence hint)

Sets the optional hint text that is displayed at the bottom of the the matching list. This can be used as a cue to the user on how to best use the list, or to provide extra information.

Related XML Attributes
Parameters
hint the text to be displayed to the user

public void setDropDownAnchor (int id)

Sets the view to which the auto-complete drop down list should anchor. The view corresponding to this id will not be loaded until the next time it is needed to avoid loading a view which is not yet instantiated.

Parameters
id the id to anchor the drop down list view to

public void setDropDownWidth (int width)

Sets the current width for the auto-complete drop down list. This can be a fixed width, or FILL_PARENT to fill the screen, or WRAP_CONTENT to fit the width of its anchor view.

Parameters
width the width to use

public void setListSelection (int position)

Set the position of the dropdown view selection.

Parameters
position The position to move the selector to.

public void setOnItemClickListener (AdapterView.OnItemClickListener l)

Sets the listener that will be notified when the user clicks an item in the drop down list.

Parameters
l the item click listener

public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener l)

Sets the listener that will be notified when the user selects an item in the drop down list.

Parameters
l the item selected listener

public void setThreshold (int threshold)

Specifies the minimum number of characters the user has to type in the edit box before the drop down list is shown.

When threshold is less than or equals 0, a threshold of 1 is applied.

Related XML Attributes
Parameters
threshold the number of characters to type before the drop down is shown
See Also

public void setValidator (AutoCompleteTextView.Validator validator)

Sets the validator used to perform text validation.

Parameters
validator The validator used to validate the text entered in this widget.

public void showDropDown ()

Displays the drop down on screen.

Protected Methods

protected CharSequence convertSelectionToString (Object selectedItem)

Converts the selected item from the drop down list into a sequence of character that can be used in the edit box.

Parameters
selectedItem the item selected by the user for completion
Returns
  • a sequence of characters representing the selected suggestion

protected Filter getFilter ()

Returns the Filter obtained from getFilter(), or null if setAdapter(T) was not called with a Filterable.

protected void onAttachedToWindow ()

This is called when the view is attached to a window. At this point it has a Surface and will start drawing. Note that this function is guaranteed to be called before onDraw(Canvas), however it may be called any time before the first onDraw -- including before or after onMeasure(int, int).

protected void onDetachedFromWindow ()

This is called when the view is detached from a window. At this point it no longer has a surface for drawing.

protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect)

Called by the view system when the focus state of this view changes. When the focus change event is caused by directional navigation, direction and previouslyFocusedRect provide insight into where the focus is coming from. When overriding, be sure to call up through to the super class so that the standard focus handling will occur.

Parameters
focused True if the View has focus; false otherwise.
direction The direction focus has moved when requestFocus() is called to give this view focus. Values are View.FOCUS_UP, View.FOCUS_DOWN, View.FOCUS_LEFT or View.FOCUS_RIGHT. It may not always apply, in which case use the default.
previouslyFocusedRect The rectangle, in this view's coordinate system, of the previously focused view. If applicable, this will be passed in as finer grained information about where the focus is coming from (in addition to direction). Will be null otherwise.

protected void performFiltering (CharSequence text, int keyCode)

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

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

protected void replaceText (CharSequence text)

Performs the text completion by replacing the current text by the selected item. Subclasses should override this method to avoid replacing the whole content of the edit box.

Parameters
text the selected suggestion in the drop down list

protected boolean setFrame (int l, int t, int r, int b)

Assign a size and position to this view. This is called from layout.

Parameters
l Left position, relative to parent
t Top position, relative to parent
r Right position, relative to parent
b Bottom position, relative to parent
Returns
  • true if the new size and position are different than the previous ones