android - 如何将 MutableList<> 放入实体(房间,Kotlin)
问题描述
我发现将自定义列表添加到实体中有些困难。这是我的代码,我不太确定我错过了什么
应用使用数据
class AppUsageData(val appName: String, val packageName: String, val imageId: Drawable, val maxUsage: Int, val mAhPerHour: Float, val mAhDrained: Float, val allMahDrained: Float, val allSecondsOfUsage: Int, val firstTimeStamp: Long, val lastTimeStamp: Long, val totalTimeVisible: Long, val lastTimeUsed: Long, val lastTimeVisible: Long, val totalTimeInForeground: Long, val lastTimeForegroundServiceUsed: Long, val totalTimeForegroundServiceUsed: Long)
转换器
class Converters {
@TypeConverter
fun fromAppUsageDataList(value : MutableList<AppUsageData>) = Json.encodeToString(value)
@TypeConverter
fun toAppUsageDataList(value: String) = Json.decodeFromString<MutableList<AppUsageData>>(value)
}
数据库
@Database(entities = [..., ...],
autoMigrations = [
AutoMigration (from = 3, to = 4)],
version = 4,
exportSchema = true)
@TypeConverters(Converters::class)
abstract class BatteryInfoDatabase : RoomDatabase() {
.
.
.
}
这是我得到的一个例外
Caused by: kotlinx.serialization.SerializationException: Serializer for class 'AppUsageData' is not found.
Mark the class as @Serializable or provide the serializer explicitly.
at kotlinx.serialization.internal.Platform_commonKt.serializerNotRegistered(Platform.common.kt:91)
at kotlinx.serialization.internal.PlatformKt.platformSpecificSerializerNotRegistered(Platform.kt:29)
at kotlinx.serialization.SerializersKt__SerializersKt.serializer(Serializers.kt:59)
at kotlinx.serialization.SerializersKt.serializer(Unknown Source:1)
at kotlinx.serialization.SerializersKt__SerializersKt.builtinSerializerOrNull$SerializersKt__SerializersKt(Serializers.kt:79)
at kotlinx.serialization.SerializersKt__SerializersKt.serializerByKTypeImpl$SerializersKt__SerializersKt(Serializers.kt:69)
at kotlinx.serialization.SerializersKt__SerializersKt.serializer(Serializers.kt:54)
at kotlinx.serialization.SerializersKt.serializer(Unknown Source:1)
at com.paget96.batteryguru.utils.database.batteryinfo.Converters.fromAppUsageDataList(Converters.kt:17)
我尝试将 @Serializable 添加到类 AppUsageData,但同样的事情发生
解决方案
只是错过了这个插件,在添加这个并将@Serializable 带回 AppUsageData类之后一切正常。
plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '1.5.0'
}
推荐阅读
- javascript - 将 HTMLElement 附加到内联元素的中间
- c# - RemoveRange 上的 DbUpdate 异常
- ios - 进入后台时停止应用程序刷新。(iOS)
- statistics - 不同样本量的不同组的统计参数比较
- json - 使用 JQuery 解析 JSON Bing 搜索 API
- python - 尝试在 Python 中进行单元测试时出现“ModuleNotFoundError: No module named ...”
- azure-functions - Azure 函数 .net 5 隔离 blob 输出绑定
- python - 我试图将我的 Python Web 应用程序部署到 Microsoft Azure,但它失败了,我在 Github 上收到了这个错误
- android-studio - 安装构建工具修订版 31 在 android studio 中已损坏
- php - Bootstrap 下拉菜单不显示 Wordpress 下拉菜单中的项目