Android 在数组列表Filterable中筛选不取消上一个筛选器
我看过filter方法文档,它显示调用filter会取消所有以前未执行的过滤请求,并发布一个新的过滤请求,该请求将在以后执行 但是我收到的实际回调有一些不同。在我的实现中,它并没有取消以前的筛选请求,而是在最近的搜索条件之后为以前的搜索条件调用Android 在数组列表Filterable中筛选不取消上一个筛选器,android,android-listview,filter,Android,Android Listview,Filter,我看过filter方法文档,它显示调用filter会取消所有以前未执行的过滤请求,并发布一个新的过滤请求,该请求将在以后执行 但是我收到的实际回调有一些不同。在我的实现中,它并没有取消以前的筛选请求,而是在最近的搜索条件之后为以前的搜索条件调用publishResults()方法。日志如下所示: 10-03 17:49:41.781: E/TAG(2150): onTextChanged first Criteria 10-03 17:49:41.781: E/TAG(2150):
publishResults()
方法。日志如下所示:
10-03 17:49:41.781: E/TAG(2150): onTextChanged first Criteria
10-03 17:49:41.781: E/TAG(2150): performFiltering first Criteria
10-03 17:49:41.961: E/TAG(2150): onTextChanged second Criteria
10-03 17:49:41.961: E/TAG(2150): performFiltering second Criteria
10-03 17:49:42.195: E/TAG(2150): publishResults second Criteria
10-03 17:49:42.219: E/TAG(2150): publishResults first Criteria
您只需在适配器中使用一个
Filter
的单个实例,即可取消以前未执行的任何筛选请求。不要每次调用getFilter
时都创建Filter
的新实例
例如,在适配器初始化时初始化它,只需从
getFilter
方法返回即可。您需要跟踪初始列表并对其执行第二次筛选。@njzk2能否请您详细说明一下。您使用的是同一个筛选器实例吗?我是这样实现的:@Override public void onTextChanged(CharSequence arg0,int arg1,int arg2,int arg3){Log.e(“TAG”,“onTextChanged”+arg0);adapter.getFilter().filter(arg0);}@pskink谢谢!我的问题通过使用adapter.getFilter()的单个实例解决了。