我试图通过完成子节点来返回列表。 我有一个包含有子节点的节点,我倾向于完全返回,但没有结果。
我收到以下错误:
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;
}
}
答案 0 :(得分:0)
您的模型还可以。 主代码中有一个小问题。
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) {
}
});
希望这会有所帮助。
答案 1 :(得分:0)
经过几个小时的搜索,我发现Firebase的结构与我想象的有些不同,我在Point模型中对其进行了更改:列出日期;地图天;我现在可以成功。我有点躺。谢谢!