java - 如何追加到实时数据库中的数组列表?

标签 java android firebase firebase-realtime-database

我有一个用户数据库,其中包含他们的电子邮件、角色和联系人列表。

enter image description here

我有添加联系人的代码,当您输入 EditText 时,它会检查数据库是否存在电子邮件,如果存在,则会将电子邮件附加到联系人列表中。但是,我的数据库中没有添加任何内容。

    public void searchContacts(final String emailInput){
    final DatabaseReference users;

    users = FirebaseDatabase.getInstance().getReference("users");
    users.orderByChild("email").equalTo(emailInput).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot userSnapshot: dataSnapshot.getChildren()){
                if((userSnapshot.child("email").getValue(String.class).equals(emailInput))){
                    users.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("contacts").child(emailInput).setValue(true);
                }
            }
        }

最佳答案

未添加任何内容,因为您尚未创建列表。要解决此问题,请使用以下代码:

public void searchContacts(final String emailInput){
    DatabaseReference users = FirebaseDatabase.getInstance().getReference("users");
    users.orderByChild("email").equalTo(emailInput).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            List<String> list = new ArrayList<>(); //Create the list
            for (DataSnapshot userSnapshot: dataSnapshot.getChildren()){
                String email = userSnapshot.child("email").getValue(String.class);
                if(email.equals(emailInput)){
                    users.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("contacts").child(emailInput).setValue(true);
                    list.add(email); //Add the email the list
                }
            }

            //Do what you need to do with list
        }
    }
}

关于java - 如何追加到实时数据库中的数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591705/

相关文章:

java - 离线同步文件: Upload ArrayList or Upload in a for loop

java - Android 处理来自 REST Web 服务调用的响应

firebase - 更改了Firebase项目,它给了我错误[API key 无效。请传递有效的API key 。身份验证期间

angular - 等到触发器在 ionic-angular 的 firebase 上被触发

javascript - AngularJS 网站示例项目的 Firebase API 问题

java - url.contains、url.startsWith、其他示例?

java - org.jboss.resteasy.spi.UnhandledException : javax. persistence.PersistenceException:无法构建实体管理器工厂

android - 应用程序无法横向运行

java - 导入元素的资源属性中带有自定义前缀的 spring 属性占位符

java - 在swt中设置要为多行文本显示的行数