快捷搜索:

Android 中文 SDK (47) —— Filter

正文

一、布局

public abstract class Filter extends Object

java.lang.Object

android.widget.Filter

二、概述

过滤器经由过程过滤模式来约束数据,平日由实现了Filterable接口的子类来天生。 过滤操作是经由过程调用 filter(CharSequence) 或者 filter(CharSequence, android.widget.Filter.FilterListener)这些异步措施来完成的。以上措施一旦被调用,过滤哀求就会被递交到哀求行列步队中等待处置惩罚,同时该操作会取消那些之前递交的然则还没有被处置惩罚的哀求。

三、构造函数

public Filter ()

创建一个新的异步过滤器。

四、公共措施

public CharSequence convertResultToString (Object resultValue)

将受过滤的聚拢工具转换成CharSequence文本。所有承袭了Filter的子类应该重写该措施。该措施的默认实现:假如参数为null则返回空字符串或者返回参数的字符串形式.

参数

resultValue 转换成CharSequence文本的工具

返回值

CharSequence 文本

public final void filter(CharSequence constraint, Filter.FilterListener listener)

启动一个异步的过滤操作。对该措施的调用会取消之前行列步队中等待处置惩罚的过滤哀求并且递交新的过滤哀求等待履行。完成过滤操作之后,看护监听器。

参数

constraint 过滤数据的约束前提

listener 监听过滤操作完成之后发出的看护

拜见

filter(CharSequence)

performFiltering(CharSequence)

publishResults(CharSequence, android.widget.Filter.FilterResults)

public final void filter(CharSequence constraint)

启动一个异步的过滤操作。对该措施的调用会取消之前行列步队中等待处置惩罚的过滤哀求并且递交新的过滤哀求等待履行。

参数

constraint 过滤数据的约束前提

拜见

filter(CharSequence, android.widget.Filter.FilterListener)

五、 受保护措施

protected abstract Filter.FilterResults performFiltering (CharSequence constraint)

根据约束前提调用一个事情线程过滤数据。子类必须实现该措施来履行过滤操作。过滤结果以Filter.FilterResults的形式返回,然后在UI线程中经由过程publishResults(CharSequence,android.widget.Filter.FilterResults)措施来宣布。

约定:当约束前提为null时,原始数据必须被规复。

参数

constraint约束前提

返回值

过滤结果

拜见

filter(CharSequence, android.widget.Filter.FilterListener)

publishResults(CharSequence, android.widget.Filter.FilterResults)

Filter.FilterResults

protected abstract void publishResults (CharSequence constraint, Filter.FilterResults results)

经由过程调用UI线程在用户界面宣布过滤结果。子类必须实现该措施来显示performFiltering(CharSequence)的过滤结果。

参数

constraint约束前提

results过滤结果

拜见

filter(CharSequence, android.widget.Filter.FilterListener)

performFiltering(CharSequence)

Filter.FilterResults

六、弥补

示例代码

未过滤的数据如下图所示:

为过滤器设置约束前提(只显示年岁为22的用户):

TestFilter.java

public class TestFilter extends ListActivity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ArrayListHashMapString,String>> list = new

ArrayList HashMapString, String>>();

HashMapString, String> map1 = new HashMapString, String>();

HashMapString, String> map2 = new HashMapString, String>();

HashMapString, String> map3 = new HashMapString, String>();

map1.put("name", "henly");

map1.put("age", "22");

map2.put("name", "john");

map2.put("age", "23");

map3.put("name", "lilei");

map3.put("age", "22");

list.add(map1);

list.add(map2);

list.add(map3);

SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.user, new String[]{"name","age"}, new int[]{R.id.name,R.id.age});

String str = new String("22");

CharSequence constraint = str.subSequence(0, str.length());

Filter filter = simpleAdapter.getFilter(); //获得一个过滤器

filter.filter(constraint);//为该过滤器设置约束前提

setListAdapter(simpleAdapter);

}

}

您可能还会对下面的文章感兴趣: