简介:我已经创建了我的应用数据库,如下图所示。
为了显示用户保存的书籍,我首先尝试读取用户的书籍密钥(位于user-books
目录中)并将所有这些密钥保存在ArrayList中,以便稍后加载(来自{{ 1}} directory)与名为books
的片段中的那些键对应的BookObjects。
注意:我正在尝试获取并在ListView中显示这些键,如下所示:(确保我正确获取密钥) < / p>
MybooksFragment
不幸的是ListView仍然是空的(没有像我希望的那样填充键)。 我做错了什么?
注意:我正在使用此数据库模型,因此我可以躲避重复数据
答案 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。
希望它有所帮助。