Kotlin Firebase foreach child 在路径中

Kotlin Firebase foreach child in path

我在 Kotlin 中有一个简单的 to-do 应用程序,我想在应用程序启动时从 firebase 中的“任务”节点获取数据。我想为每个 child 创建一个 Todo object.

var todo = Todo("child data here")

正在获取特定任务

val database = FirebaseDatabase.getInstance()
val ref = database.getReference("task")
var todo = ref.child("task1").key?.let { Todo(it) }
if (todo != null) {
     todoAdapter.addTodo(todo)
}

I want to get all children, there can be more than three.

如果你想得到一个特定节点的所有子节点,不管那里实际有多少个,那么你应该使用 getChildren() 方法遍历该节点,正如你在下面几行中看到的代码:

val db = FirebaseDatabase.getInstance().reference
val taskRef = db.child("task")
val valueEventListener = object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        for (ds in dataSnapshot.children) {
            val value = ds.getValue(String::class.java)
            Log.d("TAG", value)

            //Create the desired object
            var todo = Todo(value) //
        }
    }

    override fun onCancelled(error: DatabaseError) {
        Log.d("TAG", error.getMessage()) //Never ignore potential errors!
    }
}
taskRef.addListenerForSingleValueEvent(valueEventListener)

logcat 中的结果将是:

task1
task2
task3
.....