我正在使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)