rot*_*ot8 3 database kotlin android-studio android-room
我想将小图像保存在我的房间数据库中,但有两个问题:
我尝试按照开发人员页面推荐的方式保存位图(https://developer.android.com/training/data-storage/room/defining-data)
@Parcelize
@Entity(tableName = "image_table")
data class ImgMod(
@PrimaryKey(autoGenerate = true)
var invoiceId: Long = 0L,
@ColumnInfo(name = "image")
var single_img: Bitmap?
): Parcelable
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Cannot figure out how to save this field into database. You can consider adding a type converter for it.
其次,我想将多个图像保存在一个数据库条目中。但我收到以下片段的相同错误:
@ColumnInfo(name = "imageList")
var img_list: ArrayList<BitMap>
Run Code Online (Sandbox Code Playgroud)
或解码为字符串的位图
@ColumnInfo(name = "imageList")
var decoded_img_list: ArrayList<String>
Run Code Online (Sandbox Code Playgroud)
如果这是一个非常基本的问题,我很抱歉。但是我该如何配置数据库/将数据处理到图像列表呢?
提前谢谢你,rot8
将图像存入数据库的一种非常简单的方法(尽管我个人不鼓励这样做)是将位图以 Base-64 编码为字符串并将其放入数据库的一行中。
考虑到位图占用的内存非常大;和base64编码的东西会增加它的大小更多,所以在加载一堆图像时要小心...我也认为Room和SQLite支持二进制数据作为blob,所以你可以将一个列声明为并且ByteArray它应该可以工作。
我在项目中所做的是将它们写入我的应用程序的内部或外部存储中,然后将引用存储Uri为String以后能够从磁盘检索图像。
我更不鼓励的一件事是每行填充多个值;在 SQL 库中包含一个内容列表绝对不是您应该遵循的模式。创建“连接”表应该足够简单,或者只是一个可以用来对它们进行分组的额外列应该足够简单,对吧?
| 归档时间: |
|
| 查看次数: |
5590 次 |
| 最近记录: |