AutoCompleteTextView强制显示所有项目

AutoCompleteTextView强制显示所有项目,第1张

AutoCompleteTextView强制显示所有项目

基本上,经过5-6个小时的实验以了解该死的过滤器的工作原理后,我编写了自己的适配器,该适配器完全可以实现我想要的功能:

    public class burtuAdapteris extends ArrayAdapter<String> implements Filterable {       ArrayList<String> _items = new ArrayList<String>();       ArrayList<String> orig = new ArrayList<String>();       public burtuAdapteris(Context context, int resource, ArrayList<String> items) {super(context, resource, items);for (int i = 0; i < items.size(); i++) {     orig.add(items.get(i)); }       }       @Override       public int getCount() {if (_items != null)    return _items.size();else    return 0;       }       @Override       public String getItem(int arg0) {return _items.get(arg0);       }      @Override      public Filter getFilter() {          Filter filter = new Filter() {   @Override   protected FilterResults performFiltering(CharSequence constraint) {       if(constraint != null)Log.d("Constraints", constraint.toString());       FilterResults oReturn = new FilterResults();            String temp;         int counters = 0;       if (constraint != null){_items.clear();if (orig != null && orig.size() > 0) {    for(int i=0; i<orig.size(); i++)      {    temp = orig.get(i).toUpperCase();          if(temp.startsWith(constraint.toString().toUpperCase()))          {    _items.add(orig.get(i));    counters++;          }      }}Log.d("REsult size:" , String.valueOf(_items.size()));    if(!counters)    {       _items.clear();       _items = orig;    }oReturn.values = _items;oReturn.count = _items.size();       }       return oReturn;   }   @SuppressWarnings("unchecked")   @Override   protected void publishResults(CharSequence constraint, FilterResults results) {       if(results != null && results.count > 0) {  notifyDataSetChanged();  }  else {      notifyDataSetInvalidated();  }   } };          return filter;      } }

而且使用简单,只需将原始适配器替换为此:

final burtuAdapteris fAdapter = new burtuAdapteris(this, android.R.layout.simple_dropdown_item_1line, liste);

就我而言,liste是:

ArrayList<String> liste = new ArrayList<String>();



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5562291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存