- Posts no fórum: 7
01/08/2018, 15:50:24 via Web
01/08/2018 15:50:24 via Web
Bom tenho o seguinte código:
private void abrirCadastroContato() {
String emailContato;
emailContato = "email";
int contador = 1;
while (contador <=3) {
if (contador == 1) {
emailContato = "vendas@tecmaf.com.br";
}
if (contador == 2) {
emailContato = "assistencia@tecmaf.com.br";
}
if (contador == 3) {
emailContato = "suprimentos@tecmaf.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 ++;
}
}
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 nó dentro do nó "dGVzdGU0QGdtYWlsLmNvbQ=="
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?
— alterado em 01/08/2018, 15:51:30
Conteúdo editorial recomendado
Com o seu consentimento, o conteúdo externo é carregado aqui.
Ao clicar no botão acima, concorda que o conteúdo externo poderá ser-lhe exibido. Os dados pessoais podem ser transmitidos a fornecedores terceiros no processo. Pode encontrar mais informações sobre isto no nosso Política de Privacidade.