AutoCompleteTextView 控件实现提示文本以及模糊查询
2016-11-18 16:21
1501 查看
AutoCompleteTextView要实现模糊查询 ,重写ArrayAdapter和 系统里面自带的一样的代码,源代码是 匹配开头,设置 android:completionThreshold"=1 就是 第一个字符提示,默认是2个,将valueText.startsWith(prefixString)改为valueText.contains(prefixString)就能实现模糊查询。另外 AutoCompleteTextView属性列举一下:
另外可自定义adapter, 实现Filterable 接口 ,重写
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
//建立 过滤器
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
// 过滤后利用FilterResults将过滤结果返回
FilterResults results = new FilterResults();
if (mUnfilteredData == null) {
mUnfilteredData = new ArrayList<String>(names);
}
if (prefix == null || prefix.length() == 0) {
ArrayList<String> list = mUnfilteredData;
results.values = list; // list是上面的过滤结果
results.count = list.size();// 结果数量
} else {
String prefixString = prefix.toString().toLowerCase();
ArrayList<String> unfilteredValues = mUnfilteredData;
int count = unfilteredValues.size();
ArrayList<String> newValues = new ArrayList<String>(count);
for (int i = 0; i < count; i++) {
String value = mUnfilteredData.get(i);
String valueText = value.toLowerCase();
if (valueText.contains(prefixString)) { //实现模糊查询
// valueText.contains(prefixString) 源码 ,匹配开头
newValues.add(value);
}
results.values = newValues;
results.count = newValues.size();
}
}
return results;
}
// 用于更新自动完成列表
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
names = (List<String>) results.values;
if (results.count > 0 && results
8d3e
!= null) {
notifyDataSetChanged();
} else {// 无过滤结果,关闭列表
notifyDataSetInvalidated();
}
}
}
setCompletionHint(CharSequence) | 设置下拉菜单中的提示标题 | |
android:completionHintView | 设置下拉菜单中提示标题的视图 | |
android:completionThreshold | setThreshold(int) | 设置用户至少输入几个字符才会显示提示 |
adnroid:dropDownAnchor | setDropDownAnchor(int) | 设置下拉菜单的定位“锚点”组件,如果没有指定该属性,将使用该TextView本身作为定位”锚点“组件 |
adnroid:dropDownHeight | setDropDownHeight(int) | 设置下拉菜单的高度 |
android:dropDownHorizontalOffest | 设置下拉菜单与文本框之间的水平偏移,下拉菜单默认与文本框左对齐 | |
adnroid:dropDownVerticalOffest | 设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认紧跟文本框 | |
android:dropDownWidth | setDropDownWidth(int) | 设置下拉菜单的宽度 |
android:popupBackground | setDropDownBackgroundResource(int) | 设置下拉菜单的背景 |
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
//建立 过滤器
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
// 过滤后利用FilterResults将过滤结果返回
FilterResults results = new FilterResults();
if (mUnfilteredData == null) {
mUnfilteredData = new ArrayList<String>(names);
}
if (prefix == null || prefix.length() == 0) {
ArrayList<String> list = mUnfilteredData;
results.values = list; // list是上面的过滤结果
results.count = list.size();// 结果数量
} else {
String prefixString = prefix.toString().toLowerCase();
ArrayList<String> unfilteredValues = mUnfilteredData;
int count = unfilteredValues.size();
ArrayList<String> newValues = new ArrayList<String>(count);
for (int i = 0; i < count; i++) {
String value = mUnfilteredData.get(i);
String valueText = value.toLowerCase();
if (valueText.contains(prefixString)) { //实现模糊查询
// valueText.contains(prefixString) 源码 ,匹配开头
newValues.add(value);
}
results.values = newValues;
results.count = newValues.size();
}
}
return results;
}
// 用于更新自动完成列表
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
names = (List<String>) results.values;
if (results.count > 0 && results
8d3e
!= null) {
notifyDataSetChanged();
} else {// 无过滤结果,关闭列表
notifyDataSetInvalidated();
}
}
}
相关文章推荐
- AutoCompleteTextView的使用和源码分析以及实现响应式输入提示功能
- 从零开始学android:Android中的基本控件(下) —— 随笔提示文本:AutoCompleteTextView
- AutoCompleteTextView控件的应用-实现记录提示
- Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度
- AutoCompleteTextView中的弹出框实现模糊查询
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- Android中修改源码实现AutoCompeteTextView控件的模糊匹配
- AutoCompleteTextView实现自动提示
- Android UI控件系列:AutoCompleteTextView(自动提示)
- AutoCompleteTextView 与sqlite绑定实现记住用户输入的内容并自动提示
- android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习
- AutoCompleteTextView实现提示
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)2
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)2
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼音提示中文(gray)
- Android自动提示控件AutoCompleteTextView