【发布时间】:2019-08-19 10:48:45
【问题描述】:
我以这种方式将目标添加到数据库中:
private fun addTarget(name: String, description: String) {
if (!TextUtils.isEmpty(name)) {
val target = Target(guid = "some", name = name, description = description)
databaseReference?.child("users")
?.child(mUserId.toString())?.child("targets")?.push()?.setValue(target)
} else Log.d("some", "Enter a name")
}
并在我的 firebase 数据库中获取以下结构:
接下来,我尝试在TargetsFragment 中显示我的目标列表
在onViewCreated 我调用下一个函数:
private fun updateListData() {
databaseReference = FirebaseDatabase.getInstance().getReference()
getTargetsFromDb()
}
private fun getTargetsFromDb() {
databaseReference?.child("users")?.child(mUserId.toString())?.
child("targets")?.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (targetSnapshot in dataSnapshot.children) {
val target = targetSnapshot.getValue(Target::class.java)
target?.let { targetList.add(it) }
}
recyclerView?.adapter = adapter
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d("some", "Error trying to get targets for ${databaseError.message}")
}
})
}
【问题讨论】:
-
我在您的数据库中看不到任何禁止字符。您确定在添加数据时没有收到该错误吗?
-
@AlexMamo 我解决了这个错误的问题,但也无法显示我的目标
-
@Morozov 你的意思是不能显示我的目标。你能登录
targetList检查是否添加了数据。 -
@Ashish 数据为空(但在 firebase 控制台中我可以添加此目标,现在尝试解决通信片段问题
-
如果你使用
Log.d(TAG, target.name)logcat 会打印什么?
标签: android firebase firebase-realtime-database android-recyclerview