使用到知乎的Matisse,在其原有基础上添加查询指定相册的图片
/**
* 根据bucket_display_name 查找图片
*/
private static final String SELECTION_FOR_DIRECTORY_IMG =
MediaStore.Files.FileColumns.MEDIA_TYPE + "=?"
+ " AND " + MediaStore.MediaColumns.SIZE + ">0"
+ " AND bucket_display_name= ? "
+ ") GROUP BY (bucket_id";
这样就能在onAlbumLoad回调中拿到查询结果的cursor了、继续使用知乎的RecyclerViewCursorAdapter,常规的RecyclerView想要为其添加header在0的位置插入一条headertype 的对象就行。因为这里是直接拿我们的cursor去构建的Adaper。所以考虑在修改cursor的数据源。
经过查询得知这样的需求可以通过MergeCursor实现:
/**
* 新增一条数据作为tips 的header
*/
val dummy = MatrixCursor(AlbumMediaLoader.PROJECTION)
dummy.addRow(arrayOf(Item.ITEM_ID_TIPS, Item.ITEM_DISPLAY_NAME_CAPTURE, "image/jpeg", 0, 0))
val mergeCursor = MergeCursor(arrayOf(dummy, cursor))
adapter?.swapCursor(mergeCursor)
这样就完成了