EditText with Autocomplete Functionality based on Autocomplete library that supports customizing how the items will be drawn and Multiple selected items
implementation 'gr.loukaspd:multiselectautocomplete:latest'
implementation 'com.otaliastudios:autocomplete:1.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.1'
replace with latest version number
To see it in action, take a look at the sample app in the sample
module.
This library uses the Autocomplete library.
- include
<gr.loukaspd.multiselectautocomplete.MultiSelectAutocomplete>
element in your layout file instead on EditText - Stup the Autocomplete Element by calling
input.initialize(IMultiSelectUi, ArrayList<T>)
This is an interface that controls how to draw the items inside the AutocompleteDropdown and the selected items inside the EditText
public interface IMultiSelectUi<T> {
/**
* Extract the text from an item
* @param item
* @return
*/
String getItemText(T item);
/**
* Layout file that will be used to inflate the autocomplete items
* @return the layout file Resource Id
*/
int autocompleteLayoutRes();
/**
* Update the view of the layout item
* @param rootView the view inflated from {@link #autocompleteLayoutRes()}
* @param item
*/
void autocompleteUpdateView(View rootView, T item);
/**
* Layout file that will be used to inflate the selected items inside the input
* @return the layout file Resource Id
*/
int selectedItemLayoutRes();
/**
* Update the view of the layout item
* @param rootView the view inflated from {@link #selectedItemLayoutRes()}
* @param item
*/
void selectedItemUpdateView(View rootView, T item);
}
getItemText()
: returns the text representation from an item, used for filtering autocomplete itemsautocompleteLayoutRes()
: returns the resource id of the layout file that will be used to draw the items inside the autocomplete dialogautocompleteUpdateView(View rootView, T item)
: update the view with data from the specified item inside the autocomplete dialogselectedItemLayoutRes()
: returns the resource id of the layout file that will be used to draw the selected items inside the EditTextselectedItemUpdateView(View rootView, T item)
: update the view with data from the specified item inside the EditText
You can change view attributes directly from your layout's xml file or in your java/kotlin code:
Variable | XML Attribute | Type | Description |
---|---|---|---|
supportMultiple | supportMultiple | boolean | if EditText can have multiple selected items |
showOptionsOnFocus | showOptionsOnFocus | boolean | show the popup with autocomplete options when EditText gets focus |
clearUnmatchedText | clearUnmatchedText | boolean | clear all text that is not matched when EditText loses focus |
showKeyboardOnFocus | showKeyboardOnFocus | boolean | show the keyboard when EditText gets focus |
removeSelectedItem | removeSelectedItem | boolean | when an item is selected it will be removed from options popup |
popupElevation | popupElevation | float | sets the elevtion of the autocomplete popup |
popupWidth | popupWidth | dimension | set the width of the autocomplete popup window |
popupHeight | popupHeight | dimension | set the height of the autocomplete popup window |
These must be set before calling the initialize method
setPopupBackground(Drawable drawable)
: set the background of the autocomplete popup window