Salvar dados no firebase

0 respostas
programaçãofirebasedatabasejava
T

Bom tenho o seguinte código:

private void abrirCadastroContato() {

        String emailContato;

        emailContato = "email";

        int contador = 1;

        while (contador <=3) {

            if (contador == 1) {

                emailContato = "[email removido]";

            }

            if (contador == 2) {

                emailContato = "[email removido]";

            }


            if (contador == 3) {

                emailContato = "[email removido]";

            }

            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 ++;

        }

    }

Nesse código o objetivo é fazer com que seja cadastro 3 registros no Firebase, porem quando eu executo ele, ao invés de criar 3 nós diferentes dentro do nó contatos, ele cria somente um nó e fica alterando ele, não cadastrando 3 registros diferentes, mas sim apenas 1 registro.

Resultado esperado no firebase:

Resultado obtido:
Apenas um registro dentro do nó “contatos”.

Depurando o código percebi que esse trecho a baixo geralmente não é executado, não sei se tem alguma coisa a ver com o problema mas apenas uma observação.

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();

                    }


                }

Minha questão é… Como faço para criar um while semelhante a ele que cadastre 3 nós diferentes no banco de dados Firebase?

Criado 1 de agosto de 2018
Respostas 0
Participantes 1