如何从datasnapshot AndroidStudio中检索所有数据?

时间:2019-01-02 00:19:54

标签: android firebase-realtime-database

我正在尝试从我的Firebase实时数据库中获取有关receta的所有数据(链接到我的firebase recetas图像) image 当我使用下面的代码从中获取数据时,我获得了除描述和原点之外设置为null的所有数据

database = FirebaseDatabase.getInstance();
    recetasReference = database.getReference().child("recetas");
    recetasReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot ds: dataSnapshot.getChildren()){
                Receta new_receta = ds.getValue(Receta.class);
                recetas.add(new_receta);

            }
            myAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(getApplicationContext(), "Error al mostrar", 
            Toast.LENGTH_LONG)
                    .show();
        }
    });

我尝试调试,ds正确地具有了描述和来源,但我不为什么在创建Receta时将它们设置为null。 ds receta 任何想法? 抱歉,如果我在帖子上犯了任何错误,这是我的第一个错误。

接收类:

public class Receta {

    private String name;
    private String autor;
    private String desc;
    private String origin;
    private String tiempoPrep;
    private String filepath;

public Receta(String user, String nombre, String 
            descripcion, String origen, String tiempo
            , String filepath) {
    this.autor = user;
    this.name = nombre;
    this.desc = descripcion;
    this.origin = origen;
    this.tiempoPrep = tiempo;
    this.filepath = filepath;
}
public Receta(String user, String nombre, String 
          descripcion, String origen, String tiempo) {
    this.autor = user;
    this.name = nombre;
    this.desc = descripcion;
    this.origin = origen;
    this.tiempoPrep = tiempo;
}

public Receta(){}

public String getNombre() {
    return name;
}

public void setNombre(String nombre) {
    this.name = nombre;
}

public String getAutor() {
    return autor;
}

public void setAutor(String autor) {
    this.autor = autor;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getOrigin() {
    return origin;
}

public void setOrigin(String origen) {
    this.origin = origen;
}

public String getTiempoPrep() {
    return tiempoPrep;
}

public void setTiempoPrep(String tiempoPrep) {
    this.tiempoPrep = tiempoPrep;
}

public String getFilepath() {
    return filepath;
}

public void setFilepath(String filepath) {
    this.filepath = filepath;
}
}

1 个答案:

答案 0 :(得分:0)

您的模型类receta的属性名称(用descripcion代替desc,用origen代替origin)应该与Firebase数据库中的键名相同。

您的数据类应该看起来像这样,因为引用相同变量的不同名称令人困惑。

public class Receta {
private String name;
private String autor;
private String descripcion;
private String origen;
private String tiempoPrep;
private String filepath;

public Receta(String name, String autor, String descripcion, String origen,
  String tiempoPrep, String filepath) {
this.name = name;
this.autor = autor;
this.descripcion = descripcion;
this.origen = origen;
this.tiempoPrep = tiempoPrep;
this.filepath = filepath;
}

public Receta(String name, String autor, String descripcion, String origen,
  String tiempoPrep) {
this.name = name;
this.autor = autor;
this.descripcion = descripcion;
this.origen = origen;
this.tiempoPrep = tiempoPrep;
}

public Receta() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAutor() {
return autor;
}

public void setAutor(String autor) {
this.autor = autor;
}

public String getDescripcion() {
return descripcion;
}

public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}

public String getOrigen() {
return origen;
}

public void setOrigen(String origen) {
this.origen = origen;
}

public String getTiempoPrep() {
return tiempoPrep;
}

public void setTiempoPrep(String tiempoPrep) {
this.tiempoPrep = tiempoPrep;
}

public String getFilepath() {
return filepath;
}

public void setFilepath(String filepath) {
this.filepath = filepath;
}
}