【问题标题】:how to get data into LiveData<List<Model>> from DataSnapshot如何从 DataSnapshot 获取数据到 LiveData<List<Model>>
【发布时间】:2020-01-27 20:10:56
【问题描述】:

我正在尝试从 Firebase DataSnapshot 加载数据,但尝试此操作时未收到任何数据:

override fun onActive() {
    super.onActive()

    FirebaseDatabase.getInstance()
        .getReference("/users")
        .addListenerForSingleValueEvent(object : ValueEventListener {

            override fun onCancelled(databaseError: DatabaseError) {
                Log.d("UserRepository","databaseError ${databaseError.message}")
            }

            override fun onDataChange(dataSnapshot: DataSnapshot) {
                if (dataSnapshot.exists()) {
                    value = dataSnapshot.children
                }
            }

        })
}

但是使用上面的代码,我在dataSnapshot 中没有收到任何数据

【问题讨论】:

  • 请为您的问题添加更多信息?发生了什么/没有发生什么,你期待什么
  • 同意,如果您有堆栈跟踪,则值得提供大量信息,有关您从何处覆盖此函数的一些额外说明也很有用。
  • 我是 kotlin 的新手,我正在尝试将 datasnapshot 中的数据作为哈希映射存储到 MutableLiveData> 中。但是我遇到了铸造错误:-

标签: android kotlin firebase-realtime-database mvvm data-binding


【解决方案1】:

DataSnapshot 具有包含数据快照实例的getChildren(),您需要做的就是使用 for 循环,以便能够访问所有 DataSnapshot 实例以通过使用 getValue() 获取 YourModelClass 类。然后将它们添加到模型列表中

for(DataSnapshot ds : dataSnapshot.getChildren()) {

    YourModelClass modelObject = ds.getValue(YourModelClass.class);
    Log.d("TAG", modelObject.getMsg());
    modelList.add(modelObject)
}

【讨论】:

  • 虽然这可能是一个正确的答案。如果不解释它是什么以及如何解决原始问题,三行代码并不是很有用。请详细说明您的答案。
  • @RyanNerd 感谢您的评论,我刚刚添加了我的详细解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
相关资源
最近更新 更多