Android数据库查询图片在RecyclerView,并为其添加Header

使用到知乎的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)

这样就完成了

你可能感兴趣的:(Android数据库查询图片在RecyclerView,并为其添加Header)