我已经看到了过滤方法文档,该文档显示调用过滤器会取消所有先前未执行的过滤请求,并发布将在稍后执行的新过滤请求。
但我收到的实际回调有些不同。在我的实现中,它没有取消先前的过滤请求,并在最近的搜索条件之后调用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
答案 0 :(得分:2)
您必须在适配器中仅使用一个单个Filter
实例才能取消之前未执行的任何过滤请求。每次调用Filter
时都不要创建getFilter
的新实例。
例如,在适配器初始化时初始化它,然后从getFilter
方法返回它。