【发布时间】:2022-01-02 21:16:04
【问题描述】:
我有嵌套数据类的问题。这是我的数据类:
@Entity(tableName = "categories_table")
data class Category(
var details: String = "",
@PrimaryKey
var id: String = "",
var lastUpdated: Long = -1,
var name: String = "",
var order: Int = -1,
val specialities: ArrayList<String> = arrayListOf()
)
我使用此代码从数据库中获取数据:
val valueEventListener = object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
categories.clear()
specialities.clear()
for (cat in snapshot.children){
val category: Category? = cat.getValue(Category::class.java)
for (spec in cat.children){
spec.getValue(String::class.java)?.let { specialities.add(it) }
}
category?.let { categories.add(it) }
}
_categories.value = categories
}
override fun onCancelled(error: DatabaseError) {
throw error.toException()
}
}
categoryRef.addListenerForSingleValueEvent(valueEventListener)
我有很多关于这个问题的主题,但找不到解决方案,总是得到这个错误:
Expected a List while deserializing, but got a class java.util.HashMap
编辑 我有进步)
for (cat in snapshot.children) {
val categoryMap: Map<String, Any> = cat.value as Map<String, Any>
val category = Category(details = categoryMap.getValue("details").toString(), name = categoryMap.getValue("name").toString(),
id = categoryMap.getValue("id").toString(), lastUpdated = categoryMap.getValue("lastUpdated").toString().toLong(),
order = categoryMap.getValue("order").toString().toInt())
categories.add(category)
我不确定我解析的地图是否正确,但它确实有效。如果我错了请告诉我)
【问题讨论】:
-
“categoryRef”是如何定义的?
-
biochemistry、dentist等里面有什么?
标签: android firebase kotlin firebase-realtime-database