Извлекаемые данные из firebase всегда равны нулю

#java #firebase

#java #firebase

Вопрос:

У меня есть данные. Я хочу получить данные из Firebase. Это моя структура:

 "data" : {
   "A01" : {
     "status" : 1,
     "tglkeluar" : "12-03-2019"
    },
   "A02" : {
     "status" : 1,
     "tglkeluar" : "10-03-2019"
   }
 },
  

Это моя структура:

структура

И я использовал этот код для получения данных только от дочернего элемента «A01»:

 mDatabaseA01 = FirebaseDatabase.getInstance().getReference("data").child("A01");
mDatabaseA01.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
            Data status = postSnapshot.getValue(Data.class);
            Toast.makeText(HalamanAdmin.this, status.getStatus(), Toast.LENGTH_SHORT).show();
        }
    }
  

Но данные равны нулю. Что я сейчас делаю не так?

Комментарии:

1. Можете ли вы опубликовать Data класс?

2. Я думаю, вы заходите на один уровень слишком далеко. Нет необходимости в цикле. Просто сделайте Data status = dataSnapshot.getValue(Data.class);

3. дайте мне знать, помогло ли это. рассмотрите возможность принятия ответа, если это так.

Ответ №1:

Вот в чем проблема

 for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
    Data status = postSnapshot.getValue(Data.class);
    Toast.makeText(HalamanAdmin.this, status.getStatus(), Toast.LENGTH_SHORT).show();
 }
  

Ваши данные больше не существуют с дочерними объектами, поскольку вы находитесь внутри дочерних объектов.
Вместо этого вы должны сделать это

 Data status = new Data(dataSnapshot.get("status"), dataSnapshot.get("tglkeluar");
  

Пожалуйста, не забудьте иметь конструктор в классе данных

 public Data(String status, String tglkeluar){
    this.status = status;
    this.tglkeluar = tglkeluar;
}
  

Комментарии:

1. но мне нужны ТОЛЬКО данные из ‘A01’ .. если бы я использовал этот код. данные из ‘A02’ также будут прочитаны

2. при этом будут получены только данные из ‘A01’, не меняйте вашу ссылку. просто замените код, который я упомянул @WildanRomiza