无法解析AutocompleteFilter.create方法,求11.4.2版本多类型过滤替代方案
解决Google Places自动补全多类型过滤的问题
嘿,我来帮你搞定这个问题!
首先,你遇到的AutocompleteFilter.create(List<Integer>)无法解析的问题,确实是因为11.4.2版本的Play Services Places库还没有这个方法——这个接受整数列表的重载是后续版本才新增的,所以在11.4.2里找不到很正常。
不过不用降级,咱们有更适合这个版本的方案:利用类型常量的位掩码特性,通过**按位或(|)**把多个类型组合起来,再用AutocompleteFilter.Builder来构建过滤器。
具体实现代码
// 直接用Builder+按位或组合多个类型 AutocompleteFilter mAutocompleteFilter = new AutocompleteFilter.Builder() .setTypeFilter(AutocompleteFilter.TYPE_FILTER_ADDRESS | AutocompleteFilter.TYPE_FILTER_CITIES) .build();
原理说明
Google Places的这些TYPE_FILTER_*常量本质是int类型的位掩码,每个类型对应二进制里的某一位。用|操作符把它们合并后,过滤器就会同时匹配所有指定的类型,完全能达到你想要的多类型过滤效果。而且这个方式在11.4.2版本是完全支持的,官方当时的Builder.setTypeFilter()方法就设计成接受组合后的位掩码值。
如果之后你升级到更高版本(比如16.0.0及以上),就可以直接用AutocompleteFilter.create(List<Integer>)的方法,但就目前的11.4.2版本来说,上面的Builder方案是最稳妥的替代方案。
内容的提问来源于stack exchange,提问作者mKosut
相关产品推荐
相关产品推荐

