正文

  一、结构

    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>

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582589,如需转载请自行联系原作者

Android 中文 SDK (47) —— Filter相关推荐

  1. 使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)

    2019独角兽企业重金招聘Python工程师标准>>> 其实android sdk本身里面包含了很多开发帮助文档(英文版).具体的使用步骤如下 1.打开sdk下载帮助文档目录 我的安 ...

  2. 获取android的SDK或者手机目录路径

    获取android的SDK或者手机目录路径 Google为我们提供了API来获取SDK或者手机目录路径: 1.获取SD卡目录 File file1 = Environment.getExternalS ...

  3. Android之SDK、NDK、JNI和so文件

    Android之SDK.NDK.JNI和so文件 1.     SDK Android SDK(AndroidSoftware Development Kit),即Android软件开发工具包,And ...

  4. Android 中文api (81)——InputMethod [输入法]

    前言 本章内容是android.view.inputmethod.InputMethod,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢迎大家访问他的 ...

  5. Android中文API(136) —— Bitmap

    前言 本章内容android.graphics.Bitmap章节,译为"位图",版本为Android 4.0 r1,翻译来自:"StreamH",欢迎访问他的博 ...

  6. Android中文API(99)—— RelativeLayout

    一.结构 public class RelativeLayout extends ViewGroup java.lang.Object android.view.View android.view.V ...

  7. android update sdk --no-ui,CircleCI Android constraintLayout不起作用

    我现在正在将CircleCI用于我的项目.我也在我的项目中实现新的constraintLayout.现在我被CircleCI大楼困住了.它在gradle -dependencies运行时向我显示: F ...

  8. uniapp 调用 android 原生sdk

    1.Android Studio 下载地址:Android Studio官网 OR Android Studio中文社区 2.HBuilderX 3.App离线SDK下载:最新android平台SDK ...

  9. 微博Android平台SDK文档

    博Android平台SDK文档 编号:WEIBO_ANDROID_SDK 版本:WEIBO_ANDROID_SDK V3.1.2 修订记录: 时间 文档版本 修订人 备注 2012/7/20 2.0. ...

最新文章

  1. 悟道 · 文溯详解:蛋白质序列的大规模预训练
  2. php umount强制,linux mount挂载与umount 卸载及“Device is busy”问题 | 璞玉(POOY)
  3. html js 添加数据类型,js数据类型判断和转换
  4. SPOJ - GSS3 Can you answer these queries III(线段树+区间合并)
  5. 邮件服务器“单点登录”功能
  6. 大咖面对面 | 陈果果博士谈智能语音
  7. PHP中的$_SERVER['PATH_INFO']
  8. 安全研究员警告:特斯拉 Backup Gateway 联网存在多种安全风险
  9. 计算机中丢失api-ms-win-crt-runtime-
  10. 灰色预测模型 matlab人口预测模型代码如下
  11. java 判断 string null_java 字符串为null 如何判断
  12. 修改Win10系统文件夹C:\Users\下用户名为中文方法
  13. html5ify插件,漂亮的jQuery对话框插件Dialogify
  14. android永久关闭linux,Android临时和永久关闭selinux
  15. ios10怎么设置电池颜色_IOS10秘籍:如何调整降低白点值让屏幕更暗
  16. 【CP2K教程(三)】元动力学 (Metadynamics)与增强采样
  17. turtle画奥运五环图
  18. python: npy数据写入excel文件
  19. java lua_请问该如何在Java中使用Lua脚本语言?
  20. java基于微信小程序的大学生个人家庭理财产品 uniapp小程序

热门文章

  1. 使用C/C++发展Web系统开源
  2. RHEL5系统 sendmail+qpopper 架设简易邮件服务器
  3. Delphi 调用VC的DLL
  4. 《自适应软件开发》—从奴隶主到领袖 4 领导—协作
  5. cocos studio和cocos creator关系
  6. Android Studio 中删除项目和项目找回------ Project Structure的使用
  7. Java模板引擎-FreeMarker
  8. mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
  9. 谈国内软件测试盲点和与国外的差别
  10. 论流量平台(交易内容)生死劫——币看流量生意正在进入正循环