今天我们看一个Android开发中十分常用的控件-AutoCompleteTextView 。
3步走1min搞定。
先看最好的教程,官方API,然后我们照猫画虎,迅速搞定。
官方示例代码:
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"
};
}
首先看布局文件,写好控件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.quan.car.myautocompletetextview.MainActivity">
<AutoCompleteTextView
android:id="@+id/input_actv_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>
</RelativeLayout>
android:completionThreshold="1"
下面是核心代码,三步走:
第一步,找到控件:
<span style="white-space:pre"> </span>private AutoCobmpleteTextView input_actv_main = null;
input_actv_main = (AutoCompleteTextView) findViewById(R.id.input_actv_main);
第二步,准备数据,定义适配器:
<span style="white-space:pre"> </span>private static final String[] COUNTRIES = new String[] {
"BeiJing", "TianJin", "ShangHai", "GuangZhou", "ShenZhen",
"BeiQuan", "TianQuan", "ShangQuan", "GuangQuan", "ShenQuan",
<span style="white-space:pre"> </span>};
<span style="white-space:pre"> </span>ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
正所谓好奇是进步的根源,我们不妨看一下android.R.layout.simple_dropdown_item_1line是啥。
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
**
** Copyright 2008, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />
第三步,设置适配器:
input_actv_main.setAdapter(adapter);
最后附上完整源代码和演示动图。
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
/*
<span style="white-space:pre"> </span>权兴权意-20160921
<span style="white-space:pre"> </span>AutoCompleteTextView
<span style="white-space:pre"> </span>类似ListView,需要适配器
*/
public class MainActivity extends AppCompatActivity {
private AutoCobmpleteTextView input_actv_main = null;
private static final String[] COUNTRIES = new String[] {
"BeiJing", "TianJin", "ShangHai", "GuangZhou", "ShenZhen",
"BeiQuan", "TianQuan", "ShangQuan", "GuangQuan", "ShenQuan",
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input_actv_main = (AutoCompleteTextView) findViewById(R.id.input_actv_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
input_actv_main.setAdapter(adapter);
}
}