MatrixCursor和MergeCursor

来源:互联网 发布:java应届生杭州工资 编辑:程序博客网 时间:2024/05/21 22:31
1、MatrixCursor创建记录
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;
}

2、MergeCursor 记录的合并
Cursor c0 = MailboxList.this.managedQuery(                    EmailContent.Mailbox.CONTENT_URI,                    MailboxList.this.mListAdapter.PROJECTION,                    MAILBOX_SELECTION0,                    new String[] { String.valueOf(mAccountKey) },                    MailboxColumns.TYPE);        Cursor c1 = MailboxList.this.managedQuery(                        EmailContent.Mailbox.CONTENT_URI,                        MailboxList.this.mListAdapter.PROJECTION,                        MAILBOX_SELECTION,                        new String[] { String.valueOf(mAccountKey) },                        MailboxColumns.TYPE/* + "," + MailboxColumns.DISPLAY_NAME*/);        Cursor c2 = MailboxList.this.managedQuery(                    EmailContent.Mailbox.CONTENT_URI,                    MailboxList.this.mListAdapter.PROJECTION,                    MAILBOX_SELECTION1,                    new String[] { String.valueOf(mAccountKey) },                    MailboxColumns.TYPE/* + "," + MailboxColumns.DISPLAY_NAME*/);                           Cursor[] cursors = new Cursor[] { c0, c1, c2 };            Cursor c = new MergeCursor(cursors);