Android中AutoCompleteTextView自动提示
作者:lijiao 发布时间:2022-06-21 19:07:36
标签:Android,AutoCompleteTextView,自动提示
我们使用控件AutoCompleteTextView 自动提示时,有时需要设置BaseAdapter,设置BaseAdapter时,需要实现Filterable,手动进行筛选。
常用属性
布局只设置了至少输入一个字符显示提示
<AutoCompleteTextView
android:id="@+id/at"
android:completionThreshold="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
private List<String> allData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allData.add("aa");
allData.add("bb");
allData.add("cc");
allData.add("dd");
allData.add("abc");
allData.add("bcd");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.at);
MyAdapter adapter = new MyAdapter();
textView.setAdapter(adapter);
}
adapter适配器代码
class MyAdapter extends BaseAdapter implements Filterable {
DataFilter filter;
ArrayList<String> data;
@Override
public int getCount() {
if (data != null && data.size() > 0) {
return data.size();
}
return 0;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
TextView textView = new TextView(MainActivity.this);
textView.setText(data.get(position));
return textView;
}
@Override
public Filter getFilter() {
if (filter == null) {
filter = new DataFilter();
}
return filter;
}
private class DataFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
//查询结果保存到FilterResults对象里
FilterResults results = new FilterResults();
List<String> queryData = new ArrayList<>();
for (int i = 0; i < allData.size(); i++) {
if (allData.get(i).contains(prefix.toString())) {
queryData.add(allData.get(i));
}
}
results.values = queryData;
results.count = queryData.size();
return results;
}
/**
* 更新UI
*/
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
List<String> queryData = (List<String>) results.values;
if (data == null) {
data = new ArrayList<>();
}
if (data.size() > 0) {
data.clear();
}
if (queryData != null && queryData.size() > 0)
for (String string : queryData) {
data.add(string);
notifyDataSetChanged();
}
}
}
}


猜你喜欢
- idea切换分支时,修改过的代码文件全部不见了找了一下问题,切换分支时,idea自动会创建暂存文件,点开,右边View --> 即可显
- 摘要: 前面介绍了MapStrut简单用法,MapStrut的最重要的特点就是处理Java中实体与模型间不匹配属性的转换。实体模型有一个Us
- 在编写类的时候可以使用两种方式定义类:public class定义类:class定义类:如果一个类声明的时候使用了public class进
- 本文实例为大家分享了Spring实现默认标签解析流程的具体代码,供大家参考,具体内容如下承接上文,进入parseBeanDefinition
- 断言的概念断言用于证明和测试程序的假设,比如“这里的值大于 5”。断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。断言的使用
- 一.static关键字的用途在《Java编程思想》P86页有这样一段话:“static方法就是没有this的方法。在st
- 有序链表:按关键值排序。删除链头时,就删除最小(/最大)的值,插入时,搜索插入的位置。插入时需要比较O(N),平均O(N/2),删除最小(/
- springMVC是spring的一个模块,专门做web的。SpringMVC请求处理过程:请求发送,根据url-pattern,转发发送给
- 一直以为这个方法是java8的,今天才知道是是1.7的时候,然后翻了一下源码。这片文章中会总结一下与a.equals(b)的区别,然后对源码
- MD5加密在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密
- 背景:重做系统后重新配置Android studio 安装虚拟机后无法启动log中显示为启动AVD的进程被杀控制台显示为:在虚拟机列表里没有
- 黑白棋介绍黑白棋,又叫苹果棋,最早流行于西方国家。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。黑白棋非常易于上手,但精通则
- Android实现分享长图并且添加全图水印前言:长图一般是ScrollView和ListView。 我们需要取得这两个控件的完整显示的图片。
- 开篇:我们将前面的springboot整合H2内存数据库,实现单元测试与数据库无关性提供的Restful服务注册到spring cloud的
- 快速排序实现: namespace QuickSort { class QuickSort { public static void Sor
- 1. Handler使用引出现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友
- 在这篇文章中,我精选了几个比较适合 Java 编码的 IDEA 主题供小伙伴们选择。另外,我自己用的是 One Dark theme 这款。
- 1.所有流程的起点是从拨号后按下拨号键开始,此步的代码在/android sourcecode/packages/Contacts/src/
- 题目描述给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用。如果你只有10MB的内存呢?解
- 一、项目简述本系统功能包括: 一款基于Springboot+Vue的电商项目,前后端分离项目,前台后台都有,前台商品展示购买,购物车分类,订