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 MultiAutoCompleteTextView

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.

简单的讲一个类似百度,google等输入搜索字串时自动提示的功能:

常用方法总结


Public Methods
ListAdapter getAdapter()

Returns a filterable list adapter used for auto completion.

AdapterView.OnItemClickListener getItemClickListener() This method is deprecated. UsegetOnItemClickListener()intead
AdapterView.OnItemSelectedListener getItemSelectedListener() This method is deprecated. UsegetOnItemSelectedListener()intead
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 nullif 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( CompletionInfocompletion) 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, KeyEventevent) Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTERor KEYCODE_ENTERis released, if the view is enabled and clickable.
boolean onKeyUp(int keyCode, KeyEventevent) Default implementation of KeyEvent.Callback.onKeyUp(): perform clicking of the view when KEYCODE_DPAD_CENTERor KEYCODE_ENTERis released.
void onWindowFocusChanged(boolean hasWindowFocus) Called when the window containing this view gains or loses focus.
<Textends ListAdapter& Filterable> void setAdapter(T adapter)

Changes the list of data used for auto completion.

void setCompletionHint( CharSequencehint)

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

void setDropDownBackgroundResource(int id)

Sets the background of the auto-complete drop-down list.

void setOnClickListener( View.OnClickListenerlistener) Register a callback to be invoked when this view is clicked.
void setOnItemClickListener( AdapterView.OnItemClickListenerl)

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

void setOnItemSelectedListener( AdapterView.OnItemSelectedListenerl)

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





下面是一个官方的示例:

To create a text entry widget that provides auto-complete suggestions, use theAutoCompleteTextViewwidget. Suggestions are received from a collection of strings associated with the widget through anArrayAdapter.

In this tutorial, you will create aAutoCompleteTextViewwidget that provides suggestions for a country name.

【0】Start a new project namedHelloAutoComplete.
【1】Create an XML file namedlist_item.xmland save it inside theres/layout/folder. Edit the file to look like this:
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:padding="10dp"    android:textSize="16sp"    android:textColor="#000"></TextView>

This file defines a simpleTextViewthat will be used for each item that appears in the list of suggestions.
这个文件定义了一个简单的TextView,用来即时显示自动匹配的选项

【2】Open theres/layout/main.xmlfile and insert the following:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="horizontal"    android:layout_width="fill_parent"     android:layout_height="wrap_content"    android:padding="5dp">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Country" />    <AutoCompleteTextView android:id="@+id/autocomplete_country"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"/></LinearLayout>

TheTextViewis a label that introduces theAutoCompleteTextViewwidget.

【3】OpenHelloAutoComplete.javaand insert the following code for theonCreate()method:
@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES);    textView.setAdapter(adapter);}

After the content view is set to themain.xmllayout, theAutoCompleteTextViewwidget is captured from the layout withfindViewById(int). A newArrayAdapteris then initialized to bind thelist_item.xmllayout to each list item in theCOUNTRIESstring array (defined in the next step). Finally,setAdapter()is called to associate theArrayAdapterwith theAutoCompleteTextViewwidget so that the string array will populate the list of suggestions.
这里new了一个ArrayAdapter用来作为adapter.
【4】Inside theHelloAutoCompleteclass, add the string array:
static final String[] COUNTRIES = new String[] {  "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",  "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",  "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",  "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",  "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",  "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",  "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",  "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",  "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",  "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",  "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",  "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",  "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",  "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",  "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",  "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",  "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",  "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",  "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",  "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",  "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",  "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",  "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",  "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",  "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",  "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",  "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",  "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",  "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",  "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",  "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",  "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",  "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",  "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",  "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",  "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",  "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",  "Ukraine", "United Arab Emirates", "United Kingdom",  "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",  "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",  "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"};

This is the list of suggestions that will be provided in a drop-down list when the user types into theAutoCompleteTextViewwidget.

【5】Run the application.

More Information

Note that using a hard-coded string array is not a recommended design practice because your application code should focus on behavior, not content. Application content such as strings should be externalized from the code in order to make modifications to the content easier and facilitate localization of the content. The hard-coded strings are used in this tutorial only to make it simple and focus on theAutoCompleteTextViewwidget. Instead, your application should declare such string arrays in an XML file. This can be done with a<string-array<resource in your projectres/values/strings.xmlfile. For example:

这里讲hard-coded不利于国际化,我们做的AP应该focus在behavior上而不是content.所以建议把上面的String-array放在String.xml文件中,例如:
<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="countries_array">        <item>Bahrain</item>        <item>Bangladesh</item>        <item>Barbados</item>        <item>Belarus</item>        <item>Belgium</item>        <item>Belize</item>        <item>Benin</item>    </string-array></resources>


To use these resource strings for theArrayAdapter, replace the originalArrayAdapterconstructor line with the following:
String[] countries = getResources().getStringArray(R.array.countries_array);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, countries);



翻译自: http://developer.android.com/resources/tutorials/views/hello-autocomplete.html

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android拍照、录像、录音代码范例
  4. Android评论留言页面
  5. Android全透明Activity示例
  6. Android读取SD卡下面所有的TXT文件名 listView显示出来
  7. android之activity生命周期示例
  8. Android(安卓)Camera框架分析
  9. Android引入外部字体源代码

随机推荐

  1. 数据持久化框架为什么放弃 Hibernate、JP
  2. 多态与魔术方法
  3. PHP 常用魔术方法
  4. 避坑攻略:细数买云服务器的那些坑,如何避免
  5. 站群服务器一般适用于那些行业呢?
  6. Linux的一些基础命令汇总,可以收藏一波!
  7. Linux 命令 su 和 sudo 的区别?
  8. Oracle虚拟列分区测试
  9. 强!8 个 Python 优化提速的小技巧!
  10. Spring Boot + EasyExcel 导入导出,好用到