5

我看过过滤器方法文档,它显示调用过滤器会取消所有以前未执行的过滤请求,并发布一个稍后将执行的新过滤请求。

但是我收到的实际回调有些不同。在我的实现中,它没有取消上一个过滤请求,而是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     
4

1 回答 1

2

您只需在适配器中使用一个实例Filter即可取消任何先前未执行的过滤请求。不要在Filter每次getFilter调用时都创建一个新实例。

例如,在适配器初始化时对其进行初始化,然后从getFilter方法中返回它。

于 2017-09-13T22:28:07.460 回答