【问题标题】:I'm trying to return a list by completing the child node我正在尝试通过完成子节点来返回列表
【发布时间】:2019-04-13 16:41:18
【问题描述】:

我试图通过完成子节点来返回一个列表。 我有一个节点,其中包含另一个带有子节点的节点,我倾向于完全返回,但没有结果。

我收到以下错误:

System.err: com.google.firebase.database.DatabaseException: 反序列化时需要一个 List,但得到一个类 java.util.HashMap

数据库:

private void preencherLista() {
    pontos= new ArrayList<>();

    databasePontos = ConfiguracoesFirebase.getPontos();
    databasePontos.keepSynced(true);
    databasePontos.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange( DataSnapshot dataSnapshot) {
            try{
                pontos.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    Ponto ponto = snapshot.getValue(Ponto.class);
                    pontos.add(ponto);
                }


                adapter.atualizar(pontos);

            }catch (Exception e){
                e.printStackTrace();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

这是我的模特:

public class Ponto implements Serializable {

public String id;
public String local;
public String descricao;
public String inicio;
public String termino;
public String url;
public String latitude;
public String longitude;
public List<Dia> dias = new ArrayList<>();
public Ponto() {
}

public Ponto(String id, String local, String descricao, String inicio, String termino, String url, String latitude, String longitude, List<Dia> dias) {
    this.id = id;
    this.local = local;
    this.descricao = descricao;
    this.inicio = inicio;
    this.termino = termino;
    this.url = url;
    this.latitude = latitude;
    this.longitude = longitude;
    this.dias = dias;
}

public List<Dia> getDias() {
    return dias;
}

public void setDias(List<Dia> dias) {
    this.dias = dias;
}

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}


public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getLocal() {
    return local;
}

public void setLocal(String local) {
    this.local = local;
}

public String getInicio() {
    return inicio;
}

public void setInicio(String inicio) {
    this.inicio = inicio;
}

public String getTermino() {
    return termino;
}

public void setTermino(String termino) {
    this.termino = termino;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public String getLatitude() {
    return latitude;
}

public void setLatitude(String latitude) {
    this.latitude = latitude;
}

public String getLongitude() {
    return longitude;
}

public void setLongitude(String longitude) {
    this.longitude = longitude;
}


public List<Dia> retornaDias(){
    return null;
   }
}

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    你的模型没问题。 主要代码有一点问题。

    private void preencherLista() {
    
    
    databasePontos = ConfiguracoesFirebase.getPontos();
    databasePontos.keepSynced(true);
    databasePontos.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange( DataSnapshot dataSnapshot) {
            ArrayList<Ponto> pontos = new ArrayList<Ponto>();
            try{
                pontos.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    Ponto ponto = snapshot.getValue(Ponto.class);
                    pontos.add(ponto);
                }
    
    
                adapter.atualizar(pontos);
    
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
    
        }
    });
    

    希望这会有所帮助。

    【讨论】:

    • 它不起作用,我仍然有错误。如果我更改为 HasMap 模板中的 days 属性,它可以工作,但我不知道如何迭代以获取值。
    【解决方案2】:

    搜索了几个小时,发现Firebase的结构和我想的有点不一样,我在Point模型里改了:List days;地图日;我现在可以成功了。我有点闲。谢谢!

    https://imgur.com/KBDcwhB

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多