可定制的Cursor--MatrixCursor

本文探讨了Android中的Cursor接口及其子类,重点关注MatrixCursor的使用和实现。MatrixCursor作为Cursor的一种实现,允许开发者创建和定制数据库查询结果。通过分析MatrixCursor的源码,可以更好地理解和应用这个灵活的工具。
摘要由CSDN通过智能技术生成
 
       ContentProvider对外共享数据的时候的query()方法是需要一个cursor的。 但是如果没有数据库,需要对外共享数据使用ContentProvider的时候怎么办? 而有一些其他方法操作也都是需要cursor的。 此时就需要MatrixCursor了。相当有趣,它相当于为你模拟了一个表。代码如下:
@Override 
public Cursor query(Uri uri, String[] projection, String selection,  

   String[] selectionArgs, String sortOrder) {  

  String[] tableCursor = new String[] { "name", "job", "salary" };  

  MatrixCursor cursor = new MatrixCursor(tableCursor);  

  cursor.addRow(new Object[] { "1111", "1111", "1111" });  

  return cursor;  

} 
 
以上来自:http://www.cnblogs.com/topcoderliu/archive/2011/04/26/2029576.html

         MatrixCursor还可以对已经查询完成得到的Cursor中的数据进行在二次处理,完成对Cursor的数据过滤,代码如下:
private Cursor cursorFilter(Cursor cursor){
    	MatrixCursor matrixcursor=null;
    	if(cursor!=null&&cursor.getCount()>0){
    		matrixcursor = new MatrixCursor(columnNames);
   		while(cursor.moveToNext()){
    			for(int i=0;i<4;i++){
    				columns[i]=cursor.getString(i);
    			}
		        if(filterbyrule(columns[3],columns[2])){
    				matrixcursor.addRow(columns);
    			}
    		}
    		
    	}
    	return matrixcursor;
}
         其中,columns是用于向MatrixCursor中添加记录的数组,大小与原来Cursor的列数相等;columnNames即是原Cursor的列名数组。
 

Cursor 位于 android.database.Cursor类,它的设计是基于数据库服务产生的。

它有几个己知的子类,分别为:

  • AbstractCursor
  • AbstractWindowedCursor
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值