Android的数据过滤机制

了解安卓的数据过滤机制:

Android数据从底层到顶层是经过层层过滤的。比如:

显示层(GridView、 ListView、 AutoCompleteTextView )界面显示

适配层(Adapter)Cursor数据和前端显示的适配器

Cursor层(Cursor)将查询得到的数据以Cursor形式提供

提供层(ContentProvider)向上层提供统一的数据调用方式

数据层(文件、sqlite、SharedPreference)数据存储的实际位置

 

 安卓的数据过滤机制是怎样实现的?

1、为了实现数据的过滤,android设计了抽象类Filter,进行异步或者同步的数据过滤操作

2、在Adapter中继承了Filterable,提供给使用者Filter,进行过滤

3、在不同的View中,获得查询约束字符串,传递给Adapter

 

Filter类是怎样工作的?

调用filter方法 ->在另一线程中调用performFiltering进行数据查询->得到数据过滤结果后调用publishResults将结果返回到使用它的客户端。

该类中的performFiltering和publishResults均为抽象方法,需要继承者自己重写。
CursorFilter类就是Filter类的继承。CursorFilter在performFiltering中并没有直接进行数据的过滤,而是加入了CursorFilterClient成员,将过滤的操作转让给了CursorFilterClient,实际上CursorAdpater就是继承了CursorFilterClient接口,也就是说过滤操作实际上是在CursorAdapter中执行的。
 
关于Filterable接口
    常用的Adapter基本上都继承了Filterable接口,如CursorAdapter,ArrayAdapter,SimpleAdapter等。该接口只有一个函数,名为getFilter,通过该函数可以通过Adaper获取Filter,然后通过该Filter进行过滤。
 
在CursorAdapter中,可以更改过滤的流程,有两种方式:
    1、通过重写CursorAdapter的runQueryOnBackgroundThread函数,在函数中根据过滤约束字符串,重新查找生成新的Cursor。Adapter会适时将旧的Cursor进行替换。
    2、通过调用setFilterQueryProvider函数,提供一个FilterQueryProvider,该对象含有runQuery方法,作用同runQueryOnBackgroundThread方法相同。
 

转载于:https://www.cnblogs.com/LiuSiyuan/archive/2012/04/24/android.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值