将项添加到firebase数据库的列表中,并在Android中的ArrayList上检索它

时间:2017-08-22 12:08:49

标签: android json firebase arraylist firebase-realtime-database

我需要在数据库结构之后存储值列表。还要如何获取特定帖子(“第一”)值的列表。

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

我正在开发类似于博客应用程序。这里“userviews”是数据库的根。“first”和“second”是帖子标题。如果用户看到帖子“first”,他们的邮件已被发送到Firebase数据库中的“第一个”列表。

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

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"
 }
}

模型类:ViewedUser

    public class ViewedUsers {

        public String getUserEmail() {
            return userEmail;
        }

        public void setUserEmail(String userEmail) {
            this.userEmail = userEmail;
        }
    String userEmail;
}

1 个答案:

答案 0 :(得分:0)

<强>更新

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

<强> OLD

根据我的知识和经验,如果我没有错,Firebase完全依赖于键值参数。如果我错了,请告诉我。

如果您不想在数据库中使用密钥,那么您可以做的是在密钥中转换您的值。像这样:

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

这样,您的值就会成为您的密钥,您可以在检索值时轻松检索它。

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

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