Я пытаюсь вернуть список, заполнив дочерний узел

1

Я пытаюсь вернуть список, заполнив дочерний узел. У меня есть узел, который содержит другой узел с дочерними элементами, я имею тенденцию возвращаться полностью, но у меня нет результатов.

Я получаю следующую ошибку:

System.err: com.google.firebase.database.DatabaseException: ожидал список при десериализации, но получил класс java.util.HashMap

база данных:

Изображение 174551

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;
   }
}
Теги:
firebase
firebase-realtime-database

2 ответа

0

После нескольких часов поиска я обнаружил, что структура Firebase немного отличается от того, что я думал, я изменил ее в модели Point: список дней; для карты дней; Теперь я могу добиться успеха. Я немного лежал. Спасибо!

https://imgur.com/KBDcwhB

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) {

    }
});

Надеюсь это поможет.

  • 0
    Это не сработало, у меня все еще есть ошибка. Если я изменяю свойство days в шаблоне для HasMap, оно работает, но я не знаю, как выполнить итерацию для получения значений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню