How do I get data from a node inside another node in Firebase with android?

1

Ineedtogetthedataofthenode"usrCategoriaUsuario" that is in the tb_user. The normal data I get, but this usrCategoryUsuario, I can not get.

Code that looks up User data in Firebase:

DatabaseReference fb = ConfiguracaoFirebase.getFirebase().child("tb_usuario").child(idUsuarioLogado);
    fb.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                Usuario usr = dataSnapshot.getValue(Usuario.class); // Obtem os atributos do usuário

                preferencias.salvaFiltroRegiao(Integer.toString(usr.getUsrFiltroKm()));

                carregandoStop();

                Intent intent = new Intent(LoginActivity.this,MenuActivity.class);
                startActivity(intent);
                Log.i("Cheguei aqui:","5");
                finish();
                Log.i("Cheguei aqui:","6");
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

After executing the above code, it returns me null:

User Class Code:

public class Usuario {
private String usrID;
private String usrNome;
private String usrDtNasc;
private String usrSexo;
private String usrCelular;
private String usrEmail;
private String usrSenha;
private String usrUriImagemPerfil;
private double usrClassificacaoGeral;
private double usrRatingFinal;
private String usrTipoConta;
private String usrDataCadastro;
private String usrDataAtualizacao;
private String usrExcluido;
private int usrTotalClassificacao;
private int usrFiltroKm;
private Categoria usrCategoriaUsuario;

public Usuario() {
}

public double getUsrRatingFinal() {
    return usrRatingFinal;
}

public Categoria getUsrCategoriaUsuario() {
    return usrCategoriaUsuario;
}

public void setUsrCategoriaUsuario(Categoria usrCategoriaUsuario) {
    this.usrCategoriaUsuario = usrCategoriaUsuario;
}

public void setUsrRatingFinal(double usrRatingFinal) {
    this.usrRatingFinal = usrRatingFinal;
}

public int getUsrTotalClassificacao() {
    return usrTotalClassificacao;
}

public void setUsrTotalClassificacao(int usrTotalClassificacao) {
    this.usrTotalClassificacao = usrTotalClassificacao;
}

public int getUsrFiltroKm() {
    return usrFiltroKm;
}

public void setUsrFiltroKm(int usrFiltroKm) {
    this.usrFiltroKm = usrFiltroKm;
}

public String getUsrTipoConta() {
    return usrTipoConta;
}

public void setUsrTipoConta(String usrTipoConta) {
    this.usrTipoConta = usrTipoConta;
}

public String getUsrDataCadastro() {
    return usrDataCadastro;
}

public void setUsrDataCadastro(String usrDataCadastro) {
    this.usrDataCadastro = usrDataCadastro;
}

public String getUsrDataAtualizacao() {
    return usrDataAtualizacao;
}

public void setUsrDataAtualizacao(String usrDataAtualizacao) {
    this.usrDataAtualizacao = usrDataAtualizacao;
}

public String getUsrExcluido() {
    return usrExcluido;
}

public void setUsrExcluido(String usrExcluido) {
    this.usrExcluido = usrExcluido;
}


public String getUsrUriImagemPerfil() {
    return usrUriImagemPerfil;
}

public void setUsrUriImagemPerfil(String usrUriImagemPerfil) {
    this.usrUriImagemPerfil = usrUriImagemPerfil;
}

@Exclude
public String getUsrSenha() {
    return usrSenha;
}

public void setUsrSenha(String usrSenha) {
    this.usrSenha = usrSenha;
}

@Exclude
public String getUsrID() {
    return usrID;
}


public void setUsrID(String usrID) {
    this.usrID = usrID;
}

public String getUsrNome() {
    return usrNome;
}

public void setUsrNome(String usrNome) {
    this.usrNome = usrNome;
}

public String getUsrDtNasc() {
    return usrDtNasc;
}

public void setUsrDtNasc(String usrDtNasc) {
    this.usrDtNasc = usrDtNasc;
}

public String getUsrSexo() {
    return usrSexo;
}

public void setUsrSexo(String usrSexo) {
    this.usrSexo = usrSexo;
}

public String getUsrCelular() {
    return usrCelular;
}

public void setUsrCelular(String usrCelular) {
    this.usrCelular = usrCelular;
}

@Exclude
public String getUsrEmail() {
    return usrEmail;
}

public void setUsrEmail(String usrEmail) {
    this.usrEmail = usrEmail;
}

public double getUsrClassificacaoGeral() {
    return usrClassificacaoGeral;
}

public void setUsrClassificacaoGeral(double usrClassificacaoGeral) {
    this.usrClassificacaoGeral = usrClassificacaoGeral;
}}

Category code Category:

public class Categoria {
private String cgrID;
private String cgrCategoria;

public Categoria() {
}

public String getCgrCategoria() {
    return cgrCategoria;
}

public String getCgrID() {
    return cgrID;
}

public void setCgrID(String cgrID) {
    this.cgrID = cgrID;
}

public void setCgrCategoria(String cgrCategoria) {
    this.cgrCategoria = cgrCategoria;
}}

If someone can help me or propose something different, I am willing to listen.

    
asked by anonymous 12.10.2018 / 01:12

2 answers

1

I solved it this way:

 Usuario usr = dataSnapshot.getValue(Usuario.class);
                ArrayList<Categoria> categoriasDoUsuario = new ArrayList<Categoria>();
                for(DataSnapshot dados: dataSnapshot.child("usrCategoriaUsuario").getChildren()){
                    if(dados.exists()){
                        Categoria cgr = dados.getValue(Categoria.class);
                        categoriasDoUsuario.add(cgr);
                    }
                }

link

    
12.10.2018 / 04:59
1

You can move the DataSnapshot object with the child key

Ex:

for(DataSnapshot dados: dataSnapshot.child("usrCategoriaUsuario").getChildren()) {
    if(dados.exists()) {
        Categoria cgr = dados.getValue(Categoria.class);
        categoriasDoUsuario.add(cgr);
    }
}
    
12.10.2018 / 19:23