安卓AutoCompleteTextView 支持输入中文或拼音或拼音缩写的实现方式
1.Activity如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 |
package
com.travelsky.autotest; import
java.util.ArrayList; import
java.util.HashMap; import
android.os.Bundle; import
android.app.Activity; import
android.view.Menu; import
android.view.View; import
android.widget.AdapterView; import
android.widget.AdapterView.OnItemClickListener; import
android.widget.AutoCompleteTextView; import
android.widget.SimpleAdapter; import
android.widget.TextView; public
class
AutoTestActivity extends
Activity { /** Called when the activity is first created. */ ArrayList<HashMap<String, String>> list = new
ArrayList<HashMap<String, String>>(); AutoCompleteTextView ac; @Override public
void
onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_auto_test); addItems(); ac = (AutoCompleteTextView) findViewById(R.id.autocomplete); SimpleAdapter notes = new
SimpleAdapter( this , list, R.layout.main_item_three_line_row, new
String[] { "brandSearchText" , "brandName"
}, new
int [] { R.id.searchText, R.id.brandName }); ac.setAdapter(notes); ac.setThreshold( 1 ); <br><br> //以下代码是为了格式化点击提示选项后最后显示的内容,否则会把Map的key和value都显示出来 ac.setOnItemClickListener( new
OnItemClickListener() { @Override public
void
onItemClick(AdapterView<?> arg0, View arg1, int
arg2, long
arg3) { TextView tv = (TextView)arg1.findViewById(R.id.brandName); ac.setText(tv.getText().toString()+ " " ); ac.setSelection((ac.getText().toString()).length()); } }); } private
void
addItems() { HashMap<String, String> item; item = new
HashMap<String, String>(); item.put( "brandSearchText" , "dongfanghangkonggongsi DFHKGS dfhkgs" ); item.put( "brandName" , "东方航空公司" ); list.add(item); item = new
HashMap<String, String>(); item.put( "brandSearchText" , "nanfanghangkonggongsi NFHKGS nfhkgs" ); item.put( "brandName" , "南方航空公司" ); list.add(item); item = new
HashMap<String, String>(); item.put( "brandSearchText" , "guojihangkonggongsi GJHKGS gjhkgs" ); item.put( "brandName" , "国际航空公司" ); list.add(item); item = new
HashMap<String, String>(); item.put( "brandSearchText" , "sichuanhangkonggongsi SCHKGS schkgs" ); item.put( "brandName" , "四川航空公司" ); list.add(item); } } |
其中,SimpleAdapter的参数如下:
第1个,this
第2个,list: 需要传入形如 List<? extends Map<String, ?>>类型的集合对象
第3个,该参数指定一个页面布局的ID
第4个,该参数应该是一个String[]类型的参数,该参数决定提取Map<String,?>对象中哪些key对应的value来生成列表项
第5个,该参数应该是一个int[]类型的参数,该参数决定填充哪些ID的组件
2.主界面布局文件如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="航空公司:" android:textSize="20sp"/> <AutoCompleteTextView android:id="@+id/autocomplete" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入航空公司" /> </LinearLayout>
3.SimpleAdapter使用的自定义布局文件如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/brandName" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/searchText" android:visibility="gone" /> </LinearLayout>
其中,android:visibility="gone" 表示隐藏TextView,并且不保留该控件所占位置, 以便隐藏拼音及拼音缩写
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。