搜索历史 AutoCompleteTextView自定义匹配关键字匹配
2016-03-19 19:47
549 查看
参考文章 http://blog.csdn.net/lxgwm2008/article/details/8730384 ;
最近刚开始写博客质量不高 并且都是一些基础的东西 但是我还是搞了好几个小时 也比较菜鸟还比较笨 我还是要记录下来这心酸的过程 !
东西比较基础各位不要见怪 请多多批评!
思路
所以我们按照网上说的写 如下
上代码直接把适配器换成这个就ok了
最近刚开始写博客质量不高 并且都是一些基础的东西 但是我还是搞了好几个小时 也比较菜鸟还比较笨 我还是要记录下来这心酸的过程 !
东西比较基础各位不要见怪 请多多批评!
思路
所以我们按照网上说的写 如下
上代码直接把适配器换成这个就ok了
package cn.net.baseadapterhelper; import java.util.ArrayList; import java.util.List; import cn.net.handset_yuncar.R; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Filter; import android.widget.Filterable; import android.widget.TextView; /* * 搜索历史自定义适配器 实现包含匹配 * */ public class FilterAdapter<T> extends BaseAdapter implements Filterable { private List<T> fData;//过路器(MyFilter)数据源 LayoutInflater con; private List<T> data;//作为参数的数据源 private final Object mLock = new Object(); private MyFilter mFilter = null; public FilterAdapter(Context con, List<T> data) { this.con = LayoutInflater.from(con); mFilter = new MyFilter(); this.data = new ArrayList<T>(data); } public int getCount() { return data.size(); } public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } public View getView(int peisition, View conview, ViewGroup arg2) { View view = null; ViewHoder vh = null; if (conview == null) { vh = new ViewHoder(); view = con.inflate(R.layout.ruku_sousou, null); vh.te = (TextView) view.findViewById(R.id.filter_textview); view.setTag(vh); } else { view = conview; vh = (ViewHoder) view.getTag(); } vh.te.setText((CharSequence) data.get(peisition)); return view; } class ViewHoder { TextView te; } @Override public android.widget.Filter getFilter() { return mFilter; } private class MyFilter extends Filter { /** * 过滤autoCompleteEditext中的字 改成包含 */ protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); if (fData == null) { synchronized (mLock) { fData = new ArrayList<T>(data); } } int count = fData.size(); ArrayList<T> values = new ArrayList<T>(); for (int i = 0; i < count; i++) { T value = fData.get(i); String valueText = value.toString(); if (null != valueText && null != constraint && valueText.contains(constraint)) { // Log.d("--==tag", "--==tag--" + value); values.add(value); } } results.values = values; results.count = values.size(); return results; } /** * 在FilterResults方法中把过滤好的数据传入此方法中 results过滤好的数据源重新给data赋值显示新的适配内容 * 并刷新适配器 */ @Override protected void publishResults(CharSequence arg0, FilterResults results) { data = (List<T>) results.values; if (results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } } }
相关文章推荐
- Lua检测数组(tabble)中是否包含某个值
- 使用js判断数组中是否包含某一元素(类似于php中的in_array())
- 在html页面中包含共享页面的方法
- Shell脚本中调用、引用、包含另外一个脚本文件的两种方法
- Shell中调用、引用、包含另一个脚本文件的三种方法
- ThinkPHP实现动态包含文件的方法
- PowerShell包含另一个脚本文件和获取当前脚本所在目录的方法例子
- JS判断字符串包含的方法
- Mysql字符串字段判断是否包含某个字符串的2种方法
- Android中AutoCompleteTextView与MultiAutoCompleteTextView的用法
- Android AutoCompleteTextView连接数据库自动提示的方法(附demo源码下载)
- php中判断一个字符串包含另一个字符串的方法
- python实现判断数组是否包含指定元素的方法
- Android中EditText和AutoCompleteTextView设置文字选中颜色方法
- 字符串包含问题
- AutoCompleteTextView组件的功能和用法
- android 如何实现登陆界面的记住密码功能
- NSString的基本用法
- WPF Window 与 Winform Form混合使用方式
- JSP_中的包含