开箱即用,AutoCompleteTextView小部件似乎无法匹配列表值中间的输入字符串 – 匹配始终在开头;例如,输入“ar”匹配“阿根廷”,但不是“匈牙利”.
如何搜索单词中间的文本?谁能给我一个想法?
提前致谢 !
解决方法
您需要编写自定义
Filter
类并自己实现
performFiltering
方法.此方法采用CharSequence参数,您可以使用该参数执行所需的任何String操作,以便从数据集生成匹配列表(在您的情况下,您可以使用String.contains而不是String.startsWith). performFiltering函数不在UI线程上运行.
然后,将匹配列表作为FilterResults
对象返回,该对象包含Object值(匹配列表,可能是ArrayList)和int计数,它是匹配列表的大小.
最后,实现publishResults
回调方法,该方法在工作线程生成匹配列表后返回,允许您在AutoCompleteTextView的适配器上调用notifyDataSetChanged,以便它可以显示结果.