一、结构

    public abstract classFilterextendsObject

java.lang.Object

android.widget.Filter

  二、概述

    过滤器通过过滤模式来约束数据,通常由实现了Filterable接口的子类来生成。过滤操作是通过调用filter(CharSequence)或者filter(CharSequence, android.widget.Filter.FilterListener)这些异步方法来完成的。以上方法一旦被调用,过滤请求就会被递交到请求队列中等待处理,同时该操作会取消那些之前递交的但是还没有被处理的请求。

  三、构造函数

publicFilter()

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

  四、公共方法

  public CharSequenceconvertResultToString(Object resultValue)

  将受过滤的集合对象转换成CharSequence文本。所有继承了Filter的子类应该重写该方法。该方法的默认实现:如果参数为null则返回空字符串或者返回参数的字符串形式.

  参数

resultValue转换成CharSequence文本的对象

返回值

CharSequence文本

  public final voidfilter(CharSequence constraint, Filter.FilterListener listener)

  启动一个异步的过滤操作。对该方法的调用会取消之前队列中等待处理的过滤请求并且递交新的过滤请求等待执行。完成过滤操作之后,通知监听器。

  参数

  constraint过滤数据的约束条件

  listener监听过滤操作完成之后发出的通知

  参见

  filter(CharSequence)

  performFiltering(CharSequence)

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

  public final voidfilter(CharSequence constraint)

  启动一个异步的过滤操作。对该方法的调用会取消之前队列中等待处理的过滤请求并且递交新的过滤请求等待执行。

  参数

  constraint过滤数据的约束条件

参见

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

  五、 受保护方法

  protected abstract Filter.FilterResultsperformFiltering(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 voidpublishResults(CharSequence constraint, Filter.FilterResults results)

  通过调用UI线程在用户界面发布过滤结果。子类必须实现该方法来显示performFiltering(CharSequence)的过滤结果。

  参数

  constraint约束条件

  results过滤结果

  参见

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

  performFiltering(CharSequence)

         Filter.FilterResults

  六、补充

    示例代码

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

      

      为过滤器设置约束条件(只显示年龄为22的用户):

      

      TestFilter.java

publicclassTestFilterextendsListActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String,String>>list=new
ArrayList<HashMap<String,String>>();
HashMap<String,String>map1=newHashMap<String,String>();
HashMap<String,String>map2=newHashMap<String,String>();
HashMap<String,String>map3=newHashMap<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);
SimpleAdaptersimpleAdapter=newSimpleAdapter(this,list,R.layout.user,newString[]{"name","age"},newint[]{R.id.name,R.id.age});
Stringstr=newString("22");
CharSequenceconstraint=str.subSequence(0,str.length());
Filterfilter=simpleAdapter.getFilter();//得到一个过滤器
filter.filter(constraint);//为该过滤器设置约束条件
setListAdapter(simpleAdapter);
}
}

      main.xml

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayoutandroid:id="@+id/listlinearlayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ListViewandroid:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"/>
</LinearLayout>
</LinearLayout>

      user.xml

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns: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"
>
<TextViewandroid:id="@+id/name"
android:layout_width="150dip"
android:layout_height="30dip"
android:textSize="12pt"
/>
<TextViewandroid:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12pt"
/>
</LinearLayout>

android中的Filter接口简介相关推荐

  1. Android方法的概括,android中的Filter接口简介

    一.结构 public abstract class Filter extends Object java.lang.Object android.widget.Filter 二.概述 过滤器通过过滤 ...

  2. Android中的Parcelable接口和Serializable用法和区别

    Parcelable接口: Interface for classes whose instances can be written to and restored from a Parcel. Cl ...

  3. 多态在android中(利用接口调用服务中方法)的应用

    首先我们已经了解了java中多态的基本概念 1方法重载. 2向上转型,向下转型 今天我们主要讲向上转型在android中的应用范例. 在java中向上向下转型的图解: 重点:子类对象向上转型为父类对象 ...

  4. Android中谷歌翻译接口使用(使用谷歌翻译接口,App做文本翻译)

    原文章:https://blog.csdn.net/pifutan/article/details/78554691.结合原文按照自己需求,实现功能.效果如下: 功能实现: 使用Android自带Sp ...

  5. OpenCV3.3中K-Means聚类接口简介及使用

    OpenCV3.3中给出了K-均值聚类(K-Means)的实现,即接口cv::kmeans,接口的声明在include/opencv2/core.hpp文件中,实现在modules/core/src/ ...

  6. android中volley通信框架简介

    1. 什么是Volley? 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient ...

  7. Android中通过USB接口与和PC进行通讯的demo程序

    以往开发过多款安卓嵌入式设备,这些设备与PC通讯主要通过设备上的以太网网口进行网络通讯,最近一个项目设备没有以太网网口,设备与PC通讯要求使用普通安卓数据线连接设备与PC完成数据通讯. 查阅相关资料以 ...

  8. android实现runnable接口,Android中实现Runnable接口简单例子

    本课讲的是如何实现一个Runnable,在一个独立线程上运行Runnable.run()方法.Runnable对象执行特别操作有时叫作任务. Thread和Runnable都是基础的类,靠他们自己,能 ...

  9. Android中Toast的用法简介

    2019独角兽企业重金招聘Python工程师标准>>> Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的 ...

最新文章

  1. BMC Plant biology:高丰度青枯菌改变了番茄根际微生物组和代谢组
  2. 帧中继环境下NBMA模式的配置
  3. 10 在Spring Cloud中使用Hystrix
  4. Axure 共享强制签出签入
  5. MySQL 索引优化器选择索引的规则
  6. 内部文件检索——公司经验管理系统的一种有效方法
  7. L1-016 查验身份证 (15 分) — 团体程序设计天梯赛
  8. Oracle 中文排序 Oracle 中文字段排序
  9. 大学生活_网络营销实验
  10. 万字详解什么是生成对抗网络GAN
  11. Java初学者使用Scanner通过键盘输入学生成绩,并使用while循环实现重复输入,计算成绩的平均分及优秀率等
  12. socketDemo套接字
  13. 整理的部分TI AM4379嵌入式项目笔记
  14. 文件的下载(2)——解决下载文件名的乱码问题
  15. Sailfish 浏览器是基于 Gecko 引擎开发
  16. 不会编程如何制作Android辅助功能?
  17. Rebound库使用分享
  18. 局域网联机_MC联机教程
  19. 立创eda专业版学习笔记(5)(设计流程)
  20. java原生开发是什么意思_什么是ABA问题?java里面的原生解决方案是什么?原理是什么?...

热门文章

  1. [CentOS 7] TexLive2017中kpsewhich Bug的修复
  2. Linux文件和目录的属性及权限
  3. Access数据库问题锦集
  4. 【SQL 提示 之二】index_ss Index Skip Hint
  5. Redis教程(一):Redis简介
  6. Excel导入导出组件的设计
  7. 单机版kubernetes1.13安装
  8. 题解 P2610 【[ZJOI2012]旅游】
  9. UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该版本替换为打包版本。...
  10. 再测Golang JSON类库