I am trying to make a type convertor for a model class in my app. The model class is given below.
Order
@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
now as you can see that in the Order class there is a var list:List<SelectedProductsModel>. I want to write a type converter for this list but i keep getting an error
error: cannot find symbol @androidx.room.TypeConverters(value = {SelectedProductModelConvertor.class})
following is my Room database class
@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
}
}
}
i have tried different implementations of type convertors but iam getting the same error which is mentioned above. following are the implementations of type converotrs that i have tried
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()
}
class 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) }}
I have tried all these type convertors but iam getting error. please help me