使用 KOTLIN 从 firebase 检索数据时出错
Posted
技术标签:
【中文标题】使用 KOTLIN 从 firebase 检索数据时出错【英文标题】:error retrieving data from firebase with KOTLIN 【发布时间】:2020-10-26 11:29:16 【问题描述】:我正在尝试从 firebase 检索数据,但我得到:
java.lang.ClassCastException:java.util.HashMap 无法转换为 com.android.mlc.model.Usuario
我不知道为什么演员会失败:
private fun listarDatos()
databaseReference.child("Usuario").addValueEventListener(object : ValueEventListener
override fun onCancelled(p0: DatabaseError)
Toast.makeText(baseContext, "Failed to load post.",
Toast.LENGTH_SHORT).show()
override fun onDataChange(dataSnapshot: DataSnapshot)
Log.w("Usuarios1", "mehe")
for (UsuariosFirebase in dataSnapshot.children)
listaUsuarios.add(UsuariosFirebase.value as Usuario) <--- ERROR
arrayAdapterUusuario = ArrayAdapter<Usuario>(this@MainActivity,android.R.layout.simple_list_item_1, listaUsuarios)
listaV_Usuarios.adapter = arrayAdapterUusuario
)
为什么我不能将值 UsuarioFireBase.value
转换为 Usuario
?
【问题讨论】:
listaUsuarios
的类型是什么?
请编辑您的问题并将您的数据库结构添加为屏幕截图。请回复@AlexMamo
似乎是同一种情况。 ***.com/questions/46957319/…
【参考方案1】:
据我所知,您的UsuariosFirebase.value
返回一个Map<String, Object>
,确实不能如错误所示转换为Usuario
。
要从 DataSnapshot
获取数据作为 Usuario
对象,您必须告诉 Firebase 为您进行转换:
listaUsuarios.add(UsuariosFirebase.getValue<Usuario>())
另请参阅getting values from Firebase 上的文档。
以上要求您安装了Kotlin extensions (KTX) for Firebase Realtime Database。如果你很难做到这一点,你也可以使用这个变体,它是对 Java 代码的直接重写:
listaUsuarios.add(UsuariosFirebase.getValue(Usuario::class.java))
【讨论】:
有趣的 getValue 没有类型参数:任何? ...我要哭了 你能试试listaUsuarios.add(UsuariosFirebase.getValue(Usuario::class.java))
吗?这是我在其他地方看到的,但我的回答是基于文档的建议。
是的,兄弟,UsuariosFirebase.getValue(Usuario::class.java) 工作正常 :)以上是关于使用 KOTLIN 从 firebase 检索数据时出错的主要内容,如果未能解决你的问题,请参考以下文章
当有唯一键 Kotlin 时如何从 Firebase 检索孩子
如何根据 Kotlin 中的键值从 firebase 读取数据
我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据
如何在 Android Studio 中使用 Kotlin 从 Firebase 中的数据库中获取特定值?
如何使用 Kotlin 在 Android 中处理从 Firebase Remote Config 解析 JSON 的效果方式?