在Android Studio中从DataSnapshot Firebase检索对象

时间:2019-04-15 17:10:18

标签: android firebase-realtime-database

我正在开发一个小型班次管理应用程序,其中班次存储在Firebase的数据库中。 我想获取与日期相关的所有班次(每个日期都有不同的班次数量)。

为此,我创建了以下数据库:

  // previous dates 
     "20190415" : [ null, {
    "end" : "16:00",
    "name" : "morningShift",
    "numOfEmps" : 3,
    "start" : "08:00",
    "wage" : 0
  }, {
    "emps" :  null,
    "end" : "00:00",
    "name" : "eveningShift",
    "numOfEmps" : 3,
    "start" : "16:00",
  }, {
    "emps" :  null,
    "end" : "08:00",
    "name" : "nightShift",
    "numOfEmps" : 3,
    "start" : "00:00",
  } ],
  // following dates 

我在Java中的代码如下:

    // Retrieve shifts per date from Firebase
// Date passed to this function is of form - YYYYMMDD
public static void fetchShiftsPerDayFromDB(String date, final Callback callback)
{
    FirebaseDatabase db = FirebaseDatabase.getInstance();
    DatabaseReference ref = db.getReference("config").child("shiftsPerDay").child(date);
    ref.addValueEventListener(new ValueEventListener()
    {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            ArrayList<Shift> shifts = new ArrayList<>();
            for (DataSnapshot shiftSnapshot : dataSnapshot.getChildren())
            {
                // Retrieve Shift from Database
                Shift shift = new Shift();
                shift.setName(shiftSnapshot.child("name").getValue().toString());
                shift.setStart(shiftSnapshot.child("start").getValue().toString());
                shift.setEnd(shiftSnapshot.child("end").getValue().toString());
                shift.setNumOfEmps((int)shiftSnapshot.child("numOfEmps").getValue());
                shift.setWage((int)shiftSnapshot.child("wage").getValue());
            //    shift.setEmpsList(null);

                shifts.add(shift);
            }
           callback.shiftsCallback(shifts);
        }

但是for循环不会执行。这里可能是什么问题?

非常感谢您的帮助。 谢谢。

0 个答案:

没有答案