【发布时间】:2022-01-08 21:22:48
【问题描述】:
我正在尝试为我的应用程序中的模型类制作类型转换器。模型类如下。
订购
@Entity(tableName = "Orders")
data class Order(
@PrimaryKey
var customerId:String,
var companyId:String,
var orderBookerId:String,
@ColumnInfo(name = "items") var list:List<SelectedProductsModel>
)
SelectedProductsModel
data class SelectedProductsModel(
var quantity: Int,
var skuId: String,
var companyId: String,
var productName: String?,
var vendor_brand_name: String,
var purchasePrice: Int,
var image: String,
var position: Int
):Serializable
现在你可以看到Order 类中有一个var list:List<SelectedProductsModel>。我想为此列表编写一个类型转换器,但我一直收到错误
错误:找不到符号 @androidx.room.TypeConverters(value = {SelectedProductModelConvertor.class})
以下是我的 Room 数据库类
@Database(entities = [VisitedPjpModel::class,Order::class], version = 1)
@TypeConverters(SelectedProductModelConvertor::class)
abstract class RoomDatabaseClass : RoomDatabase()
{
public abstract fun visitedDao(): VisitedPjpDao
public abstract fun orderDao():OrderDao
companion object
{
private var instance: RoomDatabaseClass? = null
fun getInstance(context: Context): RoomDatabaseClass?
{
if (instance == null)
{
synchronized(RoomDatabaseClass::class)
{
instance = Room.databaseBuilder(context, RoomDatabaseClass::class.java, "tarseel_database").allowMainThreadQueries().build()
}
}
return instance
}
}
}
我尝试了不同的类型转换器实现,但我得到了上面提到的相同错误。以下是我尝试过的类型转换器的实现
class SelectedProductModelConvertor
{
@TypeConverter
fun fromList(value : List<SelectedProductsModel>) = Json.encodeToString(value)
@TypeConverter
fun toList(value: String) = Json.decodeFromString<List<SelectedProductsModel>>(value)
}
class SelectedProductModelConvertor
{
@TypeConverter
fun listToJson(value: List<SelectedProductsModel>) = Gson().toJson(value)
@TypeConverter
fun jsonToList(value: String) = Gson().fromJson(value, Array<SelectedProductsModel>::class.java).toList()
}
-
类 SelectedProductModelConvertor {
@TypeConverter fun fromListLangList(value: List<SelectedProductsModel>): String { val gson = Gson() val type = object : TypeToken<List<SelectedProductsModel>>() {}.type return gson.toJson(value, type) } @TypeConverter fun toSelectedProductsModelList(value: String): List<SelectedProductsModel> { val gson = Gson() val type = object : TypeToken<List<SelectedProductsModel>>() {}.type return gson.fromJson(value, type) }}
我已经尝试了所有这些类型转换器,但我得到了错误。请帮帮我
【问题讨论】:
标签: android kotlin android-room