contentprovider 在query时需要返回一个cursor,
好多人一直接的 只有sql数据库才有cursor.其实,
使用其他数据时(file,sp),也可以自己在内存中构建一个cursor.
MatrixCursor
步骤1
首先创建一个字符数组,且字符数组的值对应着表的字段,如下:
//标记列名
String[] COLUMN_NAME = { "_id", "name", "price" };
步骤2
利用MatrixCursor的构造方法,构造一个MatrixCursor,传入的参数即是步骤1中创建的字段数组,如下:
MatrixCursormatrixCursor=newMatrixCursor(COLUMN_NAME);
也可以指定初始大小,不指定,默认是16,和hashmap一样,如:
matrixCursor=newMatrixCursor( COLUMN_NAME, 10);
步骤3
通过matrixCursor 的addRow方法添加一行值,相当于向数据库中插入一条记录,如下:
//插入一行
matrixCursor.addRow(new Object[] { R.drawable.ic_launcher, "zhangsan",39 });
或者
注:步骤3也可以通过构造一个MatrixCursor.RowBuilder来实现,也是相当于向数据库中插入一条记录,如下:
MatrixCursor.RowBuilder builder1 = matrixCursor.newRow();
builder1.add(R.drawable.ic_launcher);
builder1.add("zhangsan");
builder1.add(39);