版权声明:本文为博主原创文章,未经博主允许不得转载。
这里说一下怎么利用 Android 的 AutoCompleteTextView 控件实现模糊搜索功能,AutoCompleteTextView 自带自动提示功能。如果
对自动提示的布局自定义要求比较高,可以采用 EditText 和 ListView 结合实现搜索的自动提示。
先看一下效果图:
先看功能实现的代码:
- public class MainActivity extends Activity implements View.OnClickListener {
- private LinearLayout empty;
- private AutoCompleteTextView search;
- private String[] str = {"大大大", "大大小", "大小大", "大小小", "小大大", "小大小", "小大小", "小小小"};
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- empty = (LinearLayout) findViewById(R.id.empty);
- empty.setOnClickListener(this);
- search = (AutoCompleteTextView) findViewById(R.id.search);
- // 自动提示适配器
- // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
- // 支持拼音检索
- SearchAdapter<String> adapter = new SearchAdapter<String>(MainActivity.this,
- android.R.layout.simple_list_item_1, str, SearchAdapter.ALL);
- search.setAdapter(adapter);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.empty:
- search.setText("");
- break;
- }
- }
- }
public class MainActivity extends Activity implements View.OnClickListener {
private LinearLayout empty;
private AutoCompleteTextView search;
private String[] str = {"大大大", "大大小", "大小大", "大小小", "小大大", "小大小", "小大小", "小小小"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
empty = (LinearLayout) findViewById(R.id.empty);
empty.setOnClickListener(this);
search = (AutoCompleteTextView) findViewById(R.id.search);
// 自动提示适配器
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
// 支持拼音检索
SearchAdapter<String> adapter = new SearchAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, str, SearchAdapter.ALL);
search.setAdapter(adapter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.empty:
search.setText("");
break;
}
}
}
这里可以看到,
AutoCompleteTextView 实现自动提示功能需要为其设置适配器,上图中注释的部分就是最普通的适配器,仅支持中
文检索,如果需要支持拼音首字母检索,需要使用一个自定义的适配器 SearchAdapter ,博主这里提供一个使用的演示,至于具体
的代码工具类的支持也是从网上查找的资源。所以这里对 SearchAdapter 具体代码不做详细说明了,可以下载完整工程查看。
这里对目录结构稍作说明:
如图,需要在 src/main/ 下新建一个 assets 文件夹,将对拼音支持的文本文件拷贝到其中。util 文件夹下的三个类不需要再做处理,
直接拷贝到自己的工程中直接使用就可。
这里再说一下 AutoCompleteTextView 的一些属性:
android:completionHint :设置下拉菜单中的提示标题。
android:completionHintView :设置下拉菜单中提示标题的视图。
android:completionThreshold :设置用户至少输入几个字符才会显示提示。
android:dropDownHeight :设置下拉菜单高度。
android:dropDownWidth :设置下拉菜单宽度。
android:dropDownHorizontalOffset :设置下拉菜单与文本框之间的水平偏移。默认与文本框左对齐。
android:dropDownVerticalOffset :设置下拉菜单与文本框之间的垂直偏移。默认紧跟文本框。
android:popupBackground :设置下拉菜单的背景。
-
顶
- 29
-
踩
- 1