Android:读取子节点的密钥

时间:2017-08-03 12:43:42

标签: android firebase firebase-realtime-database key

简介我已经创建了我的应用数据库,如下图所示。

enter image description here

为了显示用户保存的书籍,我首先尝试读取用户的书籍密钥(位于user-books目录中)并将所有这些密钥保存在ArrayList中,以便稍后加载(来自{{ 1}} directory)与名为books的片段中的那些键对应的BookObjects。

注意:我正在尝试获取并在ListView中显示这些键,如下所示(确保我正确获取密钥) < / p>

MybooksFragment

不幸的是ListView仍然是空的(没有像我希望的那样填充键)。 我做错了什么?

注意:我正在使用此数据库模型,因此我可以躲避重复数据

1 个答案:

答案 0 :(得分:1)

您正在“首先尝试读取用户的书籍密钥(位于用户书籍目录中)并将所有这些密钥保存在ArrayList中”,但实际上并没有这样做。

所以为了达到这个目的,你需要改变你的参考:

databaseReference.child("user-books").child(UID).addListenerForSingleValueEvent(new ValueEventListener() {

因为您要查询的节点是user-books而不是简单的books

为了使代码保持现状,您需要对数据库进行一些改动,如下所示:

Firebase-root
    |
    --- user-books
          |
          --- userId1
          |     |
          |     --- bookId1: true
          |     |
          |     --- bookId2: true
          |     |
          |     --- bookId2: true
          |
          --- userId2
                |
                --- bookId4: true
                |
                --- bookId5: true
                |
                --- bookId6: true

你只需要作为孩子的唯一书ID,其值为true。

希望它有所帮助。