android模糊检索_Android中实现输入框实时模糊搜索效果的方法
Android中实现输入框实时模糊搜索效果的方法
发布时间:2020-08-13 16:27:11
来源:亿速云
阅读:161
作者:小新
Android中实现输入框实时模糊搜索效果的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
Android输入框实时模糊搜索
很多开发场景会用到搜索框实时模糊搜索来帮助用户输入内容,如图
思路是在EditText 字符变动的时候 弹出ListPopupwindow并更新列表,这样的做法google已经封装为AutoCompleteTextView
用法
mAutoCompleteTextView.setAdapter(adapter);
mAutoCompleteTextView.setFocusable(true);
mAutoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
}
});
adapter自定义
Adapter 继承 BaseApdater 需要实现 Filterable 接口
private class SearchAdapter extends BaseAdapter implements Filterable {
private Context mContext;
public SearchAdapter(Context context) {
super();
this.mContext = context;
}
@Override
public int getCount() {
if (mSearchCustomEntities == null) {
return 0;
} else {
return mSearchCustomEntities.size();
}
}
@Override
public Object getItem(int position) {
if (mSearchCustomEntities == null) {
return null;
} else {
return mSearchCustomEntities.get(position);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_search_custom, null, false);
holder.tag = (TextView) convertView.findViewById(R.id.tv_custome_type);
holder.name = (TextView) convertView.findViewById(R.id.custom_name);
holder.phone = (TextView) convertView.findViewById(R.id.tv_phone);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.phone.setText(mSearchCustomEntities.get(position).phone);
holder.name.setText(mSearchCustomEntities.get(position).name);
if (mSearchCustomEntities.get(position).type == CustomerType.TEMPORARY_CUSTOMER.getType()) {
holder.tag.setVisibility(View.VISIBLE);
holder.tag.setText(mContext.getString(R.string.tag_temp));
holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_temp_txt));
holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_temp));
} else if (mSearchCustomEntities.get(position).type == CustomerType.COLLECTIVE_UNIT.getType()) {
holder.tag.setVisibility(View.VISIBLE);
holder.tag.setText(mContext.getString(R.string.tag_unit));
holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_unit_txt));
holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_unit));
} else if (mSearchCustomEntities.get(position).type == CustomerType.OUTER_MOTORCADE.getType()) {
holder.tag.setVisibility(View.VISIBLE);
holder.tag.setText(mContext.getString(R.string.tag_car));
holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_car_txt));
holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_car));
} else {
holder.tag.setVisibility(View.GONE);
}
return convertView;
}
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
private class ViewHolder {
TextView tag;
TextView name;
TextView phone;
}
自定义 过滤器
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
FilterResults results = new FilterResults();
String prefixString = prefix.toString();
//筛选部分
XbcClient.getCustomList(prefixString, new EntitiesObserver() {
@Override
protected void onGot(List entities, String msg, int errCode) {
if (entities != null && entities.size() > 0) {
mSearchCustomEntities.clear();
mSearchCustomEntities.addAll(entities);
mSearchAdapter.notifyDataSetChanged();
}else{
if (mSearchCustomEntities!=null & mSearchCustomEntities.size()>0) {
mSearchCustomEntities.clear();
mSearchAdapter.notifyDataSetInvalidated();
}
}
}
});
results.values = mSearchCustomEntities;
results.count = mSearchCustomEntities.size();
return results;
}
感谢各位的阅读!看完上述内容,你们对Android中实现输入框实时模糊搜索效果的方法大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。
android模糊检索_Android中实现输入框实时模糊搜索效果的方法相关推荐
- android模糊检索_【android学习笔记】ormlite学习之模糊搜索like
[目标]实现表中多个字段模糊搜索. [方法]ormlite like方法 :like(columnName,pattern) 使用%通配符来匹配,指定行数据,返回匹配到的结果 使用示范:mDao ...
- 计算机表格增加,电脑中给Excel表格添加水印效果的方法
相信不少朋友在日常办公中,都会使用Excel软件,它的功能十分强大,能够帮着我们很好地完成数据统计工作.那么,excel打印过程中需要设置水印的话怎么做呢?这里,系统城小编给大家分享一下电脑中设置ex ...
- android pcm文件大小_Android中的PCM设备
Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频.AudioTrack类和AudioRecord类是Android Frameworks封装提 ...
- 安卓开发使用ttf文字_Android中正确使用字体图标(iconfont)的方法
字体图标 字体图标是指将图标做成字体文件(.ttf),从而代替传统的png等图标资源. 使用字体图标的优点和缺点分别为: 优点: 1. 可以高度自定义图标的样式(包括大小和颜色),对于个人开发者尤其适 ...
- ios 按钮图片拉伸_iOS中实现图片自适应拉伸效果的方法
前言 在Android中实现图片的拉伸特别特别简单,甚至不用写一行代码,直接使用.9图片进行划线即可.但是iOS就没这么简单了,比如对于下面的一张图片(原始尺寸:200*103): 我们不做任何处理, ...
- android pcm 音量_Android中实时获取音量分贝值详解
基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压).因 ...
- java实时获取android网速_Android中获取实时网速(2)
一.实现思路: 1.Android提供有获取当前总流量的方法 2.上一秒 减去 下一面的流量差便是网速 3.注意计算 二.计算网速的工具类: package imcs.cb.com.viewappli ...
- android html 换行_Android中Strings资源加空格,换行符,@等方法示例
Android中Strings资源添加空格,换行符,@等方法,或者替换符等,非常有用,如何在string资源文件里面加入空格,换行,tab等呢?请看如下: test ...
- android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...
Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...
最新文章
- bzoj1070————2016——3——14
- Nature子刊:微生物系统的功能与功能冗余
- 数据结构与算法之美02
- 选笔记本选择CPU风扇散热的重要性
- FreeSql (九)删除数据
- 课堂作业整理三 (集合:list接口)
- java调用oracle存储过程_做一点,记一点 ~ Java调用Oracle存储过程
- spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚
- 根据文件前四个字节判断文件类型(centos 7)
- 2018.7.11 昨天晚上的列表(字典)嵌套题
- Jmeter压力测试-微信小程序
- 战术导弹飞行控制系统设计
- Golang复杂json结构体解析
- 第十四章 ESP32 新建一个WIFI热点
- 数字图像处理-DFTDCTWHT小波变换分解重构(Matlab)
- ps4玩android游戏,PS4更新7.0系统:手机秒变手柄,远程遥控畅玩游戏
- python,你也和小猪佩奇一样社会了!
- 安装visual studio 2013
- 【java】面向对象3.0
- 服务器被攻击后处理办法
热门文章
- linux smb nfs iscsi,Proxmox VE(PVE)添加nfs/smb/iscsi/NTFS做储存
- Codeforces Round #738 (Div. 2) E
- python求偏导函数_Python中多元函数的向量化偏导数
- 数字图像处理实验之比特平面分层
- python控制鼠标点击的包_控制鼠标点击的Python脚本
- 视频云转码源码|php云转码系统源码双码率秒切
- PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
- 微信支付和微信红包设计用例
- Kubernetes 笔记(08)— Daemonset 产生缘由、yaml 描述、使用方法、污点和容忍度的定义及使用、静态 Pod
- 人工智能Python有哪些应用方向?