今天新学了一个AutoCompleteTextView高级控件,当初写Java实现Ajax自动补全的时候就感觉很好玩,今天使用AutoCompleteTextView后感觉更简单了,所以特意整理一下分享出来
实现思路:
第一步:在xml中用一个AutoCompleteTextView标签、competionThreshold是从第几个字开始
第二步:编辑相对应的java,获取控件AutoCompleteTextView
第三步:在res-values-strings.xml中定义一个string-array,标签内写item
第四步:再回到java代码中,获取第三步定义的string-array
第五步:实例化一个适配器,设置参数,第二个参数需要在layout中实例化一个xml,为你自己的内容写一个TextView的控件,只需要一个,所以要改掉根标签,只存在一个TextView。
第六步:在java代码中给控件设置适配器
xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.g160628_android07_widgetplus.MainActivity">
<!--定义一个AutoCompleteTextView
设置当文本框有一个字的时候进行补全(设置completionThreshold)
-->
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:id="@+id/actv_main_auto"
/>
</LinearLayout>
java中:
package com.example.g160628_android07_widgetplus;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends AppCompatActivity {
private AutoCompleteTextView actv_main_auto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根据id获取你的AutoCompleteTextView
actv_main_auto = (AutoCompleteTextView) findViewById(R.id.actv_main_auto);
//获取value中的字符串数组
String data[]=getResources().getStringArray(R.array.data);
//实例化一个适配器(适配器的参数为,上下文,文本格式,数组)
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actv,data);
//给控件设置适配器
actv_main_auto.setAdapter(adapter);
}
}
layout中的xml文本格式
<?xml version="1.0" encoding="utf-8"?>
<!--
自己写的一个文本格式
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tv_item_actv_text"
android:textSize="30sp"
>
</TextView>
strings.xml
<resources>
<string name="app_name">G160628_android07_widgetPlus</string>
<!--
定义一个string-array,并命一个名字
-->
<string-array name="data">
<item>张三</item>
<item>张三丰</item>
<item>李四</item>
<item>李四他爹</item>
<item>王五</item>
<item>王二小</item>
<item>蛋蛋</item>
<item>狗蛋</item>
<item>妞妞</item>
<item>二狗子</item>
</string-array>
</resources>
欢迎各位指点一二