在開發(fā)APP的時(shí)候织盼,如果需要一個(gè)cursor而沒有一個(gè)現(xiàn)成的cursor孔飒,那么可以實(shí)現(xiàn)一個(gè)虛擬的表招刨,就是使用MatrixCursor暖释,比如說在使用ContentProvider的時(shí)候戚炫,數(shù)據(jù)源可以使用sqlite也可以使用SharePreference剑刑,但是ContentProvider的重載方法必須要返回一個(gè)cursor,那么這個(gè)時(shí)候就可以使用MatrixCursor双肤。
實(shí)現(xiàn)步驟僅需3步施掏,下面通過字符數(shù)組來說明:
步驟1.首先創(chuàng)建一個(gè)字符數(shù)組,且字符數(shù)組的值對應(yīng)著表的字段茅糜,如下:
String[] COLUMN_NAME = { "_id", "name", "price" };
步驟2.利用MatrixCursor的構(gòu)造方法其监,構(gòu)造一個(gè)MatrixCursor,傳入的參數(shù)即是步驟1中創(chuàng)建的字段數(shù)組限匣,如下:
MatrixCursormatrixCursor=newMatrixCursor(COLUMN_NAME);
也可以指定初始大小抖苦,如:
matrixCursor=newMatrixCursor( COLUMN_NAME, 10);
步驟3. 通過matrixCursor 的addRow方法添加一行值,相當(dāng)于向數(shù)據(jù)庫中插入一條記錄米死,如下:
matrixCursor.addRow(new Object[] { R.drawable.ic_launcher, "zhangsan",39 });
注:步驟3也可以通過構(gòu)造一個(gè)MatrixCursor.RowBuilder來實(shí)現(xiàn)锌历,也是相當(dāng)于向數(shù)據(jù)庫中插入一條記錄,如下:
MatrixCursor.RowBuilder builder1 = matrixCursor.newRow();
builder1.add(R.drawable.ic_launcher);
builder1.add("zhangsan");
builder1.add(39);
//builder1.add(399999);
通過上面三步即可完成MatrixCursor 的構(gòu)造峦筒。從MatrixCursor 中取出數(shù)據(jù)的過程與Cursor相同究西,不再贅述!