android中的Filter接口简介

转载 2013年12月05日 11:04:01

一、结构

    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);
        ArrayList
<HashMap<String,String>> list = new
                      ArrayList 
<HashMap<String, String>>();
        HashMap
<String, String> map1 = new HashMap<String, String>();
        HashMap
<String, String> map2 = new HashMap<String, String>();
        HashMap
<String, String> map3 = new HashMap<String, 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);
    }
}
复制代码

       main.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
="vertical"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    
>
    
<LinearLayout android:id="@+id/listlinearlayout"
        android:layout_width
="fill_parent"
        android:layout_height
="wrap_content"
        android:orientation
="vertical">
        
<ListView android:id="@id/android:list"
            android:layout_width
="fill_parent"
            android:layout_height
="wrap_content"
            android:drawSelectorOnTop
="false"
            android:scrollbars
="vertical" />
        
</LinearLayout>
</LinearLayout>
复制代码

      user.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
="horizontal"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    android:paddingLeft
="12dip"
    android:paddingRight
="12dip"
    android:paddingTop
="1dip"
    android:paddingBottom
="1dip"
    
>
<TextView android:id="@+id/name"
    android:layout_width
="150dip"
    android:layout_height
="30dip"
    android:textSize
="12pt"
    
/>
<TextView android:id="@+id/age"
    android:layout_width
="wrap_content"
    android:layout_height
="wrap_content"
    android:textSize
="12pt"
    
/>
</LinearLayout>

Android Filter类--线程间的通信

Filter与AsyncQueryHander实现基本类似,它包含两个Hander:RequestHandler和 ResultHandler,以及一个HandlerThread:名为Filter的线...
  • hlglinglong
  • hlglinglong
  • 2014年08月15日 10:58
  • 815

Android数据过滤器:Filter

类图:
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年10月17日 17:17
  • 11953

Android利用Filter过滤数据

MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; i...
  • ljz2009y
  • ljz2009y
  • 2014年06月18日 19:25
  • 9740

Android学习------运用 Filter 实现关键字搜索,并且高亮显示关键字

新鲜出炉的demo   代码有点乱 讲究着看吧。。。头晕。。 第一步  数据初始化   第二步监听 输入框里面的 关键字   进行过滤   运用Filter 过滤 第三步 在自己的adap...
  • xiaxiayige
  • xiaxiayige
  • 2015年11月12日 16:20
  • 3074

你必须弄懂的Intent Filter匹配规则

Intent简介       Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年06月14日 17:14
  • 16077

Andriod实现Filterable接口通过输入文本框实现过滤效果 分析

相信大家一定在见过手机通讯录的一个情景就是使用在选人的时候输入文本框里的数据就能自动筛选。今天也受一网友邀请,所以还是整理了一下这块的知识点,现在与大家共享一下,有什么疑惑的可以与我交流。实现的效果如...
  • moubenmao
  • moubenmao
  • 2013年08月15日 13:54
  • 1363

继承BaseAdapter实现Filterable的adapter类完整示例

继承BaseAdapter实现Filterable的adapter类完整示例  wkw1125  2015-08-06  726 查看  0评论 公开 原文 添加收藏    ...
  • zzq123686
  • zzq123686
  • 2016年09月08日 18:13
  • 617

(坑)android 实现filterable 接口

1参考http://stackoverflow.com/questions/14663725/list-view-filter-androidhttp://stackoverflow.com/ques...
  • qq_23974175
  • qq_23974175
  • 2016年10月30日 17:31
  • 742

Android实现Filterable通过输入文本框实现联系人自动筛选

Android实现Filterable通过输入文本框实现联系人自动筛选 标签: androidnullobjectmobilefilterclass 2012-07-30 14:49 11...
  • zzq123686
  • zzq123686
  • 2016年09月08日 20:07
  • 557

servlet中Filter接口介绍

过滤器是指拦截请求,并对传给被请求资源的ServletRequest 或 ServletResponse 进行处理的一个对象。过滤器可以用于登录、加密和解密、会话检查等等。 过滤器可以配置为拦截一个或...
  • magi1201
  • magi1201
  • 2017年05月20日 19:55
  • 719
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中的Filter接口简介
举报原因:
原因补充:

(最多只允许输入30个字)