Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase数据插入问题。数据插入不正确_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase数据插入问题。数据插入不正确

Android Firebase数据插入问题。数据插入不正确,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试将POJO插入Firebase。但是,有些字段似乎没有解析为Firebase,但没有警告或错误 我有一个POJO: public class Group { public String name; public String admin; public List<String> addedUsers; public List<String> invitedUsers; public Group(String name,

我正在尝试将POJO插入Firebase。但是,有些字段似乎没有解析为Firebase,但没有警告或错误

我有一个POJO:

public class Group {
    public String name;
    public String admin;
    public List<String> addedUsers;
    public List<String> invitedUsers;

    public Group(String name, String admin, ArrayList<String> addedUsers, ArrayList<String> invitedUsers) {
        this.name = name;
        this.admin = admin;
        this.addedUsers = addedUsers;
        this.invitedUsers = invitedUsers;
    }

    public Group() {
        // Default constructor required because we have a non-default constructor as well.
    }
}
公共类组{
公共字符串名称;
公共字符串管理;
公共列表加法器;
公开受邀者名单;
公共组(字符串名称、字符串管理、ArrayList addedUsers、ArrayList invitedUsers){
this.name=名称;
this.admin=admin;
this.addedUsers=addedUsers;
this.invitedUsers=invitedUsers;
}
公共组(){
//需要默认构造函数,因为我们还有一个非默认构造函数。
}
}
我通过这样做上传到Firebase:

DatabaseReference groupRef = ref.child("Groups");
ArrayList<String> addedUsers = new ArrayList<String>();
addedUsers.add("email1@gmail.com");
addedUsers.add("email2@gmail.com");
ArrayList<String> invitedUsers = new ArrayList<String>();
Group newGroup = new Group("GroupName",
        "email1@gmail.com", addedUsers, invitedUsers
);

groupRef.push().setValue(newGroup);
DatabaseReference groupRef=ref.child(“组”);
ArrayList addedUsers=新的ArrayList();
addedUsers.add(“email1@gmail.com");
addedUsers.add(“email2@gmail.com");
ArrayList invitedUsers=新的ArrayList();
组newGroup=新组(“组名”,
"email1@gmail.com“,添加者,被邀请者
);
groupRef.push().setValue(newGroup);
我最终在Firebase中得到了这个对象:


我现在有第二个问题,我手动将数据插入Firebase,但现在我无法将列表映射到我的Java对象,并且映射为null,我知道我可以很好地下载数据

Firebase支持键值映射。因此不支持列表。将其更改为映射类型,将电子邮件地址保留为键,并指定布尔值true或false。

我不确定列表不受支持是什么意思,似乎是这样的

基本写操作

对于基本写入操作,可以使用setValue()将数据保存到 指定的引用,替换该路径上的任何现有数据。你可以 使用此方法可以:

传递与可用JSON类型对应的类型,如下所示:

  • 长的
  • 双重的
  • 布尔值
  • Map
  • 列表
  • 如果定义自定义Java对象的类具有默认值,则传递该对象 构造函数,该构造函数不接受参数并且具有 要分配的属性

我尝试将其更改为映射类型,但是这不起作用,或者上传的值相同。此外,我不能在firebase中使用电子邮件地址作为密钥,因为它们包含数据路径中不允许的句点。您的电子邮件字符串不是吗?一定是这样。map=新哈希映射。。。和map.put(电子邮件,true)。如果电子邮件不同,则不会覆盖它,但电子邮件包含@和。这是firebase密钥的无效字符,hashmap将很容易接受它,但它不会上载到firebase,而不会将电子邮件上载到map用户。这将是更灵活和轻我错过了这一点的修正。但是列表无法逐个访问。所以我想地图更有用,这也许可以解释为什么
invitedUsers
没有显示。但是,我相信。此外,将非静态成员变量声明为
private
也是一种很好的做法。