AutoCompleteTextView使用小结
发布时间:2020-12-15 00:19:55 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 利用 ListAdapter (一般使用 ArrayAdapter )为 AutoCompleteTextView 提供数据,若有需要还可以重载 getView() 以自定义列表项的显示方式。这一步同
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
AutoCompleteTextView autoComplete = new AutoCompleteTextView(context); autoComplete.setThreshold(2); // 设置最少几个字符触发自动完成 MyAdapter adapter = new MyAdapter(context); autoComplete.setAdapter(adapter); /** * Adapter定义 */ class MyAdapter extends ArrayAdapter<MyObject> implements Filterable{ @Override public View getView(int position,View convertView,ViewGroup parent) { // define your list item view here 在此处定义列表项的视图 } /** * 实现自动完成的过滤算法 */ @Override public Filter getFilter() { Filter filter = new Filter() { /** * 本方法在后台线程执行,定义过滤算法 */ @Override protected FilterResults performFiltering(CharSequence constraint) { String keyword = String.valueOf(constraint).toLowerCase(); // 此处实现过滤 // 过滤后利用FilterResults将过滤结果返回 FilterResults filterResults = new FilterResults(); filterResults.values = results; // results是上面的过滤结果 filterResults.count = results.size(); // 结果数量 return filterResults; } /** * 本方法在UI线程执行,用于更新自动完成列表 */ @Override protected void publishResults(CharSequence constraint,FilterResults results) { if (results != null && results.count > 0) { // 有过滤结果,显示自动完成列表 MyAdapter.this.clear(); // 清空旧列表 MyAdapter.this.addAll((List<MyObject>)results.values); notifiDataSetChanged(); } else { // 无过滤结果,关闭列表 notifyDataSetInvalidated(); } } /** * 如果需要控制提示文本的显示方式,重载此函数 */ @Override public CharSequence convertResultToString(Object resultValue) { MyObject obj = (MyObject) resultValue; return obj.name; } }; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |