在 Jetpack Compose 中,SnapshotStateList 是 List 的派生类,但每当我尝试在其上添加可序列化注释时,它都会显示“找不到此类的序列化器,要使用上下文使用 @具有类型或属性的上下文注释”
我有一个 ListContainer 类,我想使其可序列化,它只包含一个 SnapshotStateList 项目列表,可以智能转换为 List 但我不知道如何告诉 kotlin序列化器将其转换为列表/使用简单的列表序列化器!
最佳答案
class SnapshotListSerializer<T>(private val dataSerializer:KSerializer<T>) :
KSerializer<SnapshotStateList<T>> {
override val descriptor: SerialDescriptor = ListSerializer(dataSerializer).descriptor
override fun serialize(encoder: Encoder, value: SnapshotStateList<T>) {
encoder.encodeSerializableValue(ListSerializer(dataSerializer), value as List<T>)
}
override fun deserialize(decoder: Decoder): SnapshotStateList<T> {
val list = mutableStateListOf<T>()
val items = decoder.decodeSerializableValue(ListSerializer(dataSerializer))
list.addAll(items)
return list
}
}
我不确定它是否有效,但这是我想出的,我会相应地更新答案
关于kotlinx.serialization ,编码解码 SnapshotStateList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68153701/