【发布时间】:2017-09-14 06:28:07
【问题描述】:
我看过过滤器方法文档,它显示调用过滤器会取消之前所有未执行的过滤请求,并发布一个稍后将执行的新过滤请求。
但是我收到的实际回调有些不同。在我的实现中,它没有取消之前的过滤请求,而是在最近的搜索条件之后为之前的搜索条件调用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
【问题讨论】:
-
您需要跟踪初始列表并对其执行第二次过滤。
-
@njzk2 你能详细说明一下吗。
-
您使用的是同一个过滤器实例吗?
-
我是这样实现的:@Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { Log.e("TAG", "onTextChanged" +arg0);适配器.getFilter().filter(arg0); }
-
@pskink 谢谢!我的问题是通过使用单个 adapter.getFilter() 实例解决的。
标签: android android-listview filter