Save data on more than one node in Firebase

0

Well I have the following code:

private void abrirCadastroContato() {

String emailContato;

emailContato = "email";

int contador = 1;

while (contador <=3) {

    if (contador == 1) {

        emailContato = "[email protected]";

    }

    if (contador == 2) {

        emailContato = "[email protected]";

    }


    if (contador == 3) {

        emailContato = "[email protected]";

    }

    identificadorContato = Base64Custom.codificarBase64(emailContato);

    firebase = ConfiguracaoFirebase.getFirebase().child("usuarios").child(identificadorContato);

    firebase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.getValue() != null) {

                //Recuperar dados do contato a ser adicionado
                Usuario usuarioContato = dataSnapshot.getValue(Usuario.class);

                //Recuperar identificador usuario logado (base64)
                Preferencias preferencias = new Preferencias(MainActivity.this);
                String identificadorUsuarioLogado = preferencias.getIdentificador();

                firebase = ConfiguracaoFirebase.getFirebase();
                firebase = firebase.child("contatos")
                        .child(identificadorUsuarioLogado)
                        .child(identificadorContato);

                Contato contato = new Contato();
                contato.setIdentificadorUsuario(identificadorContato);
                contato.setEmail(usuarioContato.getEmail());
                contato.setNome(usuarioContato.getNome());

                firebase.setValue(contato);

            } else {

                Toast.makeText(MainActivity.this, "Usuário não possui cadastro.", Toast.LENGTH_LONG).show();

            }


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    contador ++;

}

}

In this code the goal is to register 3 registers in Firebase, but when I run it, instead of creating 3 different nodes inside the contacts node, it creates only one node and changes it, not registering 3 registers but only 1 record.

Expected result in firebase: Resultobtained:

BydebuggingthecodeIrealizedthatthisdownwardstretchusuallydoesnotrun,Idonotknowifithasanythingtodowiththeproblembutjustanobservation.

firebase.addValueEventListener(newValueEventListener(){@OverridepublicvoidonDataChange(DataSnapshotdataSnapshot){if(dataSnapshot.getValue()!=null){//RecuperardadosdocontatoaseradicionadoUsuariousuarioContato=dataSnapshot.getValue(Usuario.class);//Recuperaridentificadorusuariologado(base64)Preferenciaspreferencias=newPreferencias(MainActivity.this);StringidentificadorUsuarioLogado=preferencias.getIdentificador();firebase=ConfiguracaoFirebase.getFirebase();firebase=firebase.child("contatos")
                                .child(identificadorUsuarioLogado)
                                .child(identificadorContato);

                        Contato contato = new Contato();
                        contato.setIdentificadorUsuario(identificadorContato);
                        contato.setEmail(usuarioContato.getEmail());
                        contato.setNome(usuarioContato.getNome());

                        firebase.setValue(contato);

                    } else {

                        Toast.makeText(MainActivity.this, "Usuário não possui cadastro.", Toast.LENGTH_LONG).show();

                    }


                }

My question is ... How do I create a similar while it's registering 3 different nodes in the Firebase database?

    
asked by anonymous 01.08.2018 / 14:33

1 answer

0

you can do the following

 firebase.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        if (dataSnapshot.getValue() != null) {
                            for(DataSnapshot snapshot: dataSnapshot.getChildren(){


                            //Recuperar dados do contato a ser adicionado
                            Usuario usuarioContato = snapshot.getValue(Usuario.class);

                            //Recuperar identificador usuario logado (base64)
                            Preferencias preferencias = new Preferencias(MainActivity.this);
                            String identificadorUsuarioLogado = preferencias.getIdentificador();

                            firebase = ConfiguracaoFirebase.getFirebase();
                            firebase = firebase.child("contatos")
                                    .child(identificadorUsuarioLogado)
                                    .child(identificadorContato);

                            Contato contato = new Contato();
                            contato.setIdentificadorUsuario(identificadorContato);
                            contato.setEmail(usuarioContato.getEmail());
                            contato.setNome(usuarioContato.getNome());

                            firebase.setValue(contato);
    }
                        } else {

                            Toast.makeText(MainActivity.this, "Usuário não possui cadastro.", Toast.LENGTH_LONG).show();

                        }


                    }
    
03.08.2018 / 16:58