将项目添加到 Firebase 数据库中的列表,然后在 Android 的 ArrayList 上检索它



我需要按照数据库结构存储值列表。以及如何获取特定帖子("第一个"(值的列表。

"userviews" :{
"first":{
1:
"userEmail":"abc@gmail.com",
2:
"userEmail":"xyz@gmail.com"     
},
"second":{
1:
"userEmail":"abc@gmail.com",
2:
"userEmail":"xyz@gmail.com"     
}
}

我正在开发类似于博客的应用程序。这里的"用户视图"是数据库的根。 第一"和"第二"是帖子标题。假设用户看到帖子"first",则他们的邮件已发送到Firebase数据库中的"first"列表。

我尝试使用以下解决方案,但我没有得到正确的格式

String userEmail = "abc@gmail.com";
ViewedUsers viewedUsers = new ViewedUsers();
viewedUsers.setUserEmail(userEmail);
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("userviews").child("first").setValue(viewedUsers);

如果我这样做,我会得到以下格式。

"userviews" :{
"first":{
"userEmail":"abc@gmail.com"
}
}

模型类:查看用户

public class ViewedUsers {
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
String userEmail;
}

更新

"userviews" :{
"first":{
0:"abc@gmail.com",
1:"xyz@gmail.com"     
},
"second":{
0:"abc@gmail.com",
1:"xyz@gmail.com"     
}
}

根据我的知识和经验,如果我没错的话,Firebase 完全取决于键值参数。如果我在某处错了,请告诉我。

如果您不想在数据库中使用键,那么您能做的就是将值转换为键。像这样:

"userviews" :{
"first":{
"abc@gmail.com":0
"xyz@gmail.com":0   
},
"second":{
"abc@gmail.com":0
"xyz@gmail.com":0
}
}

这样,您的值将成为您的键,您可以在检索值时轻松检索它。

您也可以将其另存为数组。正如@Simon B所建议的

要获取特定节点,您可以参考此链接和此。这很简单。如果您仍然发现任何问题,请告诉我。

相关内容

最新更新