Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在数组列表Filterable中筛选不取消上一个筛选器_Android_Android Listview_Filter - Fatal编程技术网

Android 在数组列表Filterable中筛选不取消上一个筛选器

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):

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

但是我收到的实际回调有一些不同。在我的实现中,它并没有取消以前的筛选请求,而是在最近的搜索条件之后为以前的搜索条件调用
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()的单个实例解决了。