package petbox.ae.Class
import androidx.room.Entity import androidx.room.PrimaryKey
@Entity(tableName = "products")
data class PostModel(
@PrimaryKey val id : Int? = null,
val images: ArrayList<Data>,
val name: String,
val description: String,
val price: Double?=null )
data class Data(
val id: Int,
val date_created: String,
val date_created_gmt: String,
val date_modified: String,
val src: String, )
我得到的错误是:
错误:Cannot figure out how to save this field into database。您可以考虑为它添加一个类型转换器。
private final java.util.ArrayList
error:参数的类型必须是一个带@Entity注释的类或它的集合/数组。retrofit2.Call<java.util.List<>比;产品,@org.jetbrains.annotations.NotNull ()
错误:Cannot figure out how read this field from游标
private final java.util.ArrayList
如何让它读取它?
您需要为您的数据对象列表类型转换器。
class DataConverter {
@TypeConverter
fun fromListToString(list: List<*>): String {
val type = object: TypeToken<List<*>>() {}.type
return Gson().toJson(list, type)
}
@TypeConverter
fun toData(dataString: String?): List<Data> {
if(dataString == null || dataString.isEmpty()) {
return mutableListOf()
}
val type: Type = object : TypeToken<List<Data>>() {}.type
return Gson().fromJson(dataString, type)
}
}
和注释你的图像字段像这样:
@TypeConverters(DataConverter.class)
val images: ArrayList<Data>
这里是文档https://developer.android.com/training/data-storage/room/referencing-data