While para cadastrar no Firebase

  • Respostas:4
Luis Felipe
  • Posts no fórum: 7

31/07/2018, 12:31:01 via Web

Olá,

Estou fazendo um aplicativo em android e me deparei com uma duvida na hora de salvar e exibir em uma lista, os usuários de um sistema.

Basicamente o app por enquanto adiciona qualquer um que voce coloque o email correto e click para executar a ação de adicionar a contato, até ai ok! tudo funcionando.

Agora estou precisando fazer com quem alguns usuários sejam adicionados a contatos logo que o usuário abre o app, fiz isso colocando esse método abaixo dentro do onCreate da activity principal, novamente tudo ok!

Por algum motivo ele não cadastra os 3 usuários que pre-defini na variável, imagino que seja algo relacionado ao EventListener ou o while não esta rodando e executando todos os trechos.

Obrigado desde já, fico no aguardo de uma solução!

*Se o processor for feito manualmente, trocando o valor do contador manualmente para 1 ou 2 ou 3 e o while for trocado para "contador == 1 ou 2 ou 3 " o código executa com perfeição e cadastra os 3 contatos.

private void abrirCadastroContato() {

    String emailContato;

    emailContato = "email";

    int contador = 1;

    while (contador <=3) {

    if (contador == 1) {

        emailContato = "email1@email1.com.br";

    }

    if (contador == 2) {

        emailContato = "email1@email1.com.br";

    }


    if (contador == 3) {

        emailContato = "email1@email1.com.br";

    }

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

}

}
Responder
AC&MM
  • Posts no fórum: 1 155

31/07/2018, 21:24:13 via Web

Eu não entendi bem a dúvida. O problema é em relação a lógica ou em relação a escrita do código?

AC&MM
Galaxy J7 Pro
Moto X Force
Galaxy Tab S3

útil?
Responder
Luis Felipe
  • Posts no fórum: 7

01/08/2018, 12:38:23 via Web

Bom... o problema é que mesmo eu executando esse código ele não cadastra os 3 registros no firebase, estudando um pouco depois dessa pergunta consegui ver um problema, ele parece estar cadastrando os 3 registros, porem ele cadastrar no mesmo nó, modificando o identificadorUsuarioLogado e o identificadorContato.

Eu queria que ele cadastrar os 3 registros em nós diferentes.

O problema pode ser com relação ao código do firebase(o que me parece devido a ultima descoberta citada a cima) ou pode ser na escrita do código, que seria o while no caso.

útil?
Responder
AC&MM
  • Posts no fórum: 1 155

01/08/2018, 14:38:56 via Web

Bom, eu não entendo muito sobre firebase, mas esses dados não deveriam ser guardados em um ArrayList ou algo mais dinâmico? Ou o próprio firebase gera automaticamente esse armazenamento?

AC&MM
Galaxy J7 Pro
Moto X Force
Galaxy Tab S3

útil?
Responder