android - 如何将 Firebase dataSnapshot 对象和 key 保存到 Kotlin DTO 数据类中?

标签 android firebase kotlin dto

目标:从 Android 设备更新 Firebase 实时数据库。

我的数据结构简化了:

enter image description here

我的数据类TasksDTO.kt:

data class TasksDTO(var customer : String ="", var date : String ="", var location : String ="", var key : String="") { 
   

}

我在 onCreate 下添加了一个 addValueEventListener:

 private var allTasks = ArrayList<TasksDTO>()//Used to update recyclerView. 
 reference.child("tasks").addValueEventListener(object : ValueEventListener {
    override fun onCancelled...

    override fun onDataChange(dataSnapshot: DataSnapshot) {
        val children = dataSnapshot.children
       
        allTasks.clear()

        children.forEach {

            var taskObj = it.getValue()//without key: it.getValue(TasksDTO::class.java)
            var task = TasksDTO()

            with(task){
                customer = taskObj.customer //**ERROR: Unresolved reference**
                date = taskObj.date //**ERROR: Unresolved reference**
                location = taskObj.location //**ERROR: Unresolved reference**
                key = it.key!!
            }

            //
            allTasks.add(task!!)

        }
        recyclerView.adapter!!.notifyDataSetChanged()
        

    }

}

我希望能够在 recyclerView 的 onclick item listener 函数中更新 firebase 数据。为此,我需要引用 key 来更新数据库。除非有更有效的方法。我愿意接受更正。

感谢您的帮助!

最佳答案

获取 key 需要使用getKey()方法,例如:

taskObj = it.getKey() 

关于android - 如何将 Firebase dataSnapshot 对象和 key 保存到 Kotlin DTO 数据类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57445571/

相关文章:

java - Android - 将 Java 类导入 Activity

java - 由于无法找到 Android 启动器类,无法在 Android 设备上运行 LibGDX 游戏

android - RecyclerView 在日志中显示空值但没有错误

c# - 无法使用 UnityPlayer.UnitySendMessage 将消息从 java 发送到 Unity

Android:使用 ImageView 显示 sdcard 中的 .jpg 图像

reactjs - 如何在具有功能组件的 React 应用程序中使用 Google(通过 Firebase)登录用户?

AngularFireStorage 为每次上传返回未定义的 URL

ios - 如何使 Firebase 数据库查询让一些 child 使用 Swift 3?

intellij-idea - Hello World 崩溃

kotlin - 当 T 为类型 "Nothing"时,通用参数需要类型 "Any"