Dav*_*aja 5 android kotlin android-room
我有一个这样的模型
\n\n@Entity(tableName = "allrates")\nclass Data(\n @ColumnInfo(name = "rates")\n @SerializedName("rates")\n @Expose\n var rates: Map<String, Rates>,\n\n @ColumnInfo(name = "start")\n @SerializedName("start_at")\n @Expose\n var startDate: String,\n\n @ColumnInfo(name = "end")\n @SerializedName("end_at")\n @Expose\n var endDate: String,\n\n @SerializedName("base")\n @Expose\n var base: String,\n\n @PrimaryKey(autoGenerate = true)\n var id: Int \n)\nRun Code Online (Sandbox Code Playgroud)\n\n我的问题是,当我尝试插入数据库时,没有显示任何错误,但是当我执行 \xc2\xb4get\xc2\xb4 时,总是返回 null。所以可能,我的问题出在 \xc2\xb4Converter\xc2\xb4 中,但我不确定。
\n\n这是我的转换器
\n\nclass mapConverter {\n @TypeConverter\n fun fromString(value: String): Map<String, Rates> {\n val mapType = object : TypeToken<Map<String, Rates>>() {\n\n }.type\n return Gson().fromJson(value, mapType)\n }\n\n @TypeConverter\n fun fromStringMap(map: Map<String, Rates>): String {\n val gson = Gson()\n return gson.toJson(map)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\nDAO 就这样出现了
\n\n@Dao\nabstract class RatesDao {\n\n @Query("SELECT * FROM allrates")\n abstract fun loadRates(): LiveData<Data>\n\n @Insert(onConflict = OnConflictStrategy.REPLACE)\n abstract fun insertRates(rates: Data)\n}\nRun Code Online (Sandbox Code Playgroud)\n\n与 ROOM 的连接
\n\n@Database(entities = [(Data::class)], version = 1, exportSchema = false)\n@TypeConverters(mapConverter::class)\nabstract class AppDatabase : RoomDatabase() {\n\n companion object {\n private var sInstance: AppDatabase? = null\n private const val DATABASE_NAME: String = "RatesList"\n\n fun getInstance(context: Context): AppDatabase {\n if (sInstance == null) {\n synchronized(AppDatabase::class) {\n sInstance = Room.databaseBuilder(context.applicationContext,\n AppDatabase::class.java, DATABASE_NAME)\n .build()\n }\n }\n return sInstance as AppDatabase\n }\n }\n\n abstract fun ratesDao(): RatesDao\n}\nRun Code Online (Sandbox Code Playgroud)\n
您正在用 Kotlin 编写代码,因此请将此行@JvmStatic添加到 MapConverter 类,如下所示:
class MapConverter {
companion object{
@JvmStatic
@TypeConverter
fun fromString(value: String): Map<String, String> {
val mapType = object : TypeToken<Map<String, String>>() {}.type
return Gson().fromJson(value, mapType)
}
@TypeConverter
@JvmStatic
fun fromStringMap(map: Map<String, String>): String {
val gson = Gson()
return gson.toJson(map)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8603 次 |
| 最近记录: |