Java 如何使用多个节点从firebase检索数据?

Java 如何使用多个节点从firebase检索数据?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我无法解决这个问题:当我尝试从firebase检索数据时,它说在类[class name]上没有[Node name]的setter/字段 我的类是“Ricetta”,每个节点都以Ricetta的名字命名。 里塞塔级 public class Ricetta { private String nome; private String descrizione; private int difficolta; private double minuti;

我无法解决这个问题:当我尝试从firebase检索数据时,它说在类[class name]上没有[Node name]的setter/字段

我的类是“Ricetta”,每个节点都以Ricetta的名字命名。

里塞塔级

public class Ricetta {

    private String nome;
    private String descrizione;
    private int difficolta;
    private double minuti;
    private String passaggi;
    private String tipologia;
    private String autore;
    private List<Ricetta> ricette;

    public Ricetta(){}

    public List<Ricetta> getRicette() {
        return ricette;
    }

    public void setRicette(List<Ricetta> ricette) {
        this.ricette = ricette;
    }

    public Ricetta(String nome, String descrizione, String tipologia) {
        this.nome = nome;
        this.descrizione = descrizione;
        this.tipologia = tipologia;
    }

    public Ricetta(String nome, String descrizione, String tipologia, String autore, int difficolta, double minuti) {
        this.nome = nome;
        this.descrizione = descrizione;
        this.tipologia = tipologia;
        this.autore = autore;
        this.minuti = minuti;
        this.difficolta = difficolta;
    }


    public String getAutore() {
        return autore;
    }

    public void setAutore(String autore) {
        this.autore = autore;
    }

    public void setDifficolta(int difficolta) {
        this.difficolta = difficolta;
    }

    public void setMinuti(double minuti) {
        this.minuti = minuti;
    }

    public void setTipologia(String passaggi) {
        this.passaggi = passaggi;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    public void setPassaggi(String passaggi) {
        this.passaggi = passaggi;
    }

    public String getNome() {
        return nome;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public int getDifficolta() {
        return difficolta;
    }

    public double getMinuti() {
        return minuti;
    }

    public String getPassaggi() {
        return passaggi;
    }

    public String getTipologia() {
        return tipologia;
    }

}

您正在
/users
上附加一个
ChildEventListener
。这意味着您的
onchildaded
将通过用户的直接子节点调用,即屏幕截图中的
m50…
。然后读取那里的
ricette
子节点的值,这将导致那里的所有
9999
dfsdf
等节点

我猜您正在尝试读取
ricette
下的一个或所有子节点,为此,您需要使用以下命令在快照的子节点上循环:

ref.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
       for (DataSnapshot childSnapshot: snapshot.child("ricette").getChildren()) {
           Ricetta r = childSnapshot.getValue(Ricetta.class);
           System.out.println(r.getAutore());
       }
    }

哇,你救了我!非常感谢你!
No setter/field for oooooooooo found on class com.cookbook.Ricetta
No setter/field for qweqw found on class com.cookbook.Ricetta
No setter/field for dfsdfs found on class com.cookbook.Ricetta
No setter/field for 9999 found on class com.cookbook.Ricetta
No setter/field for dfsdfdsf found on class com.cookbook.Ricetta
No setter/field for uuuuuuuuu found on class com.cookbook.Ricetta
ref.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
       for (DataSnapshot childSnapshot: snapshot.child("ricette").getChildren()) {
           Ricetta r = childSnapshot.getValue(Ricetta.class);
           System.out.println(r.getAutore());
       }
    }
reference.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
       for (DataSnapshot s: snapshot.child("ricette").getChildren()) {
           Ricetta r = s.getValue(Ricetta.class);
Log.d("data",r.getAutore());
        
       }
    }