带有自定义适配器(BaseAdapter)的MultiAutoCompleteTextView

带有自定义适配器(BaseAdapter)的MultiAutoCompleteTextView,第1张

概述我正在使用MultiAutoCompleteTextView并在其上设置我自己的自定义适配器(BaseAdapter).但是,每次我在MultiAutoCompleteTextView中编写内容时,performFiltering方法中的约束始终为我编写的每个字符获取空值.这是我的BaseAdapter类的代码:publicclassListItemAdapterextendsBa

我正在使用MultiautoCompleteTextVIEw并在其上设置我自己的自定义适配器(BaseAdapter).但是,每次我在MultiautoCompleteTextVIEw中编写内容时,performFiltering方法中的约束始终为我编写的每个字符获取空值.

这是我的BaseAdapter类的代码:

public class ListItemAdapter extends BaseAdapter implements Filterable{    ArrayList<ListItem> ListItems;    ArrayList<ListItem> suggestions = new ArrayList<>();    private Filter filter = new CustomFilter();    Context context;    LayoutInflater inflater;    public ListItemAdapter(ArrayList<ListItem> ListItems, Context context) {        this.ListItems = ListItems;        this.context = context;        inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);    }    @OverrIDe    public int getCount() {        return ListItems.size();    }    @OverrIDe    public Object getItem(int position) {        return ListItems.get(position);    }    @OverrIDe    public long getItemID(int position) {        return position;    }    @OverrIDe    public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {        VIEw v = convertVIEw;        v = inflater.inflate(R.layout.single_item, null);        TextVIEw Title = (TextVIEw) v.findVIEwByID(R.ID.Title);        Title.setText(ListItems.get(position).getTitle());        return v;    }    @OverrIDe    public Filter getFilter() {        return filter;    }    private class CustomFilter extends Filter {        @OverrIDe        protected FilterResults performFiltering(CharSequence constraint) {            suggestions.clear();            Log.d("FILTERRES", ""+ListItems.size() + ", " + constraint);            if(ListItems != null && constraint != null) {                for(int i=0 ; i<ListItems.size(); i++) {                    if(ListItems.get(i).getTitle().tolowerCase().contains(constraint)) {                        suggestions.add(ListItems.get(i));                    }                }            }            FilterResults results = new FilterResults();            results.values = suggestions;            results.count = suggestions.size();            return results;        }        @OverrIDe        protected voID publishResults(CharSequence constraint, FilterResults results) {            if(results.count > 0) {                notifyDataSetChanged();            } else {                notifyDataSetInvalIDated();            }        }    }}

这是我将适配器设置为MultiautoCompleteTextVIEw的方法:

MultiautoCompleteTextVIEw textVIEw = (MultiautoCompleteTextVIEw) findVIEwByID(R.ID.auto);ListItemAdapter adapter = new ListItemAdapter(items, this);textVIEw.setThreshold(1);textVIEw.setAdapter(adapter);

我在这里做错了什么?

编辑:
我将MultiautoCompleteTextVIEw更改为autoCompleteTextVIEw,现在可以使用了,有人知道如何使它适用于MultiautoCompleteTextVIEw吗?

解决方法:

您需要将setTokenizer()设置为MultiautoCompleteTextVIEw才能起作用.

您可以使用 –

 textVIEw.setTokenizer(new MultiautoCompleteTextVIEw.CommaTokenizer());

如果您有任何特殊要求,即使您可以设置自己的自定义令牌生成器,也可以使用CommaTokenizer,每次从下拉列表中选择任何选项时,它都会附加comma(,).

总结

以上是内存溢出为你收集整理的带有自定义适配器(BaseAdapter)的MultiAutoCompleteTextView全部内容,希望文章能够帮你解决带有自定义适配器(BaseAdapter)的MultiAutoCompleteTextView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1120668.html

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

发表评论

登录后才能评论

评论列表(0条)

保存