【问题标题】:Filtering in array list Filterable Not cancelling the previous filter在数组列表中过滤 Filterable 不取消前一个过滤器
【发布时间】: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


【解决方案1】:

您必须在适配器中仅使用 一个 单个 Filter 实例才能取消任何先前未执行的过滤请求。不要在每次调用 getFilter 时创建 Filter 的新实例。

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

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多