Как пройти через структуру Firebase в Android?

Мне нужно пройти по схеме Firebase, чтобы получить данные для каждогоworkouts и отобразить его в RecyclerView. Теперь я не могу пройти по схеме в Firebase, используя слушатель, и получить ее через класс POJO, называемыйProgram.

JSON From Firebase

{
  "subscriptions" : {
    "han@gmail,com" : {
      "-KDnhRwHjssOejrqyenP" : {
        "category" : "Strength",
        "goal" : "This workout can be done while on the phone!",
        "length" : 1,
        "title" : "Hello Workouts",
        "weeks" : {
          "week1" : [ "High Knees", "Jumping Jacks", "Wall sit", "Pushups", "Sit-ups", "Step ups", "Squats", "Tricep dips on chair", "Plank", "High Knees running in place", "Lunges", "Pushup and rotation", "Side plank (alternate per round)", "Alternating Push-Up Plank", "Chest Expander", "Diamond Push-ups", "Dive Bomber Push-ups", "Butt Kickers", "Lying Triceps Lifts", "One Arm Side Push-up", "Overhead Arm Clap", "Overhead Press", "Power Circles", "Push-up and Rotation", "T Push-ups", "Reverse Plank", "Spiderman Push-up", "T Raise", "Tricep Dips", "Wall Push-ups", "Wide Arm Push-ups", "Burpees" ]
        }
      },
      "-KDni3TN4NMyGXePyp92" : {
        "category" : "Strength",
        "goal" : "This workout can be done by a BABUJI",
        "length" : 1,
        "title" : "Indian Workouts",
        "weeks" : {
          "week1" : [ "Diamond Pushups", "Jackknives", "Plyo Lunges", "Plyo Squats", "Single leg plank (alternate per round)", "Plyo Lunges", "Pushup and rotation", "Weighted side plank (alternate per round)", "Alternating Push-Up Plank", "Chest Expander", "Diamond Push-ups", "Dive Bomber Push-ups", "One Arm Side Push-up", "Overhead Press", "Push-up and Rotation", "T Push-ups", "Spiderman Push-up", "Wide Arm Push-ups", "Burpee Pushups" ]
        }
      }
    },
    "obama@gmsil,com" : {
      "-KDnfjROKeFAL9wccsxY" : {
        "category" : "Mobility",
        "goal" : "afternoon body weight workout",
        "length" : 1,
        "title" : "Afternoon HiiT",
        "weeks" : {
          "week1" : [ "High Knees", "Squats", "Lunges", "Diamond Push-ups", "Lying Triceps Lifts" ]
        }
      },
      "-KDps90Dn6XtJc6Co00b" : {
        "category" : "Strength",
        "goal" : "goal",
        "length" : 1,
        "title" : "title",
        "weeks" : {
          "week1" : [ "Diamond Pushups", "Jackknives", "Plyo Lunges", "Plyo Squats", "Single leg plank (alternate per round)", "Plyo Lunges", "Pushup and rotation", "Weighted side plank (alternate per round)", "Alternating Push-Up Plank", "Chest Expander", "Diamond Push-ups", "Dive Bomber Push-ups", "One Arm Side Push-up", "Overhead Press", "Push-up and Rotation", "T Push-ups", "Spiderman Push-up", "Wide Arm Push-ups", "Burpee Pushups" ]
        }
      }
    }
  }
  }

Код слушателя

    public void FB(){
ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    for (DataSnapshot postSnapshot: snapshot.getChildren()) {
                        System.out.println(postSnapshot.getValue());
    //Program post = proSnapshot.getValue(Program.class);
                    }
                }
                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("The read failed: " + firebaseError.getMessage());
                }
            });
        }

LogCat

03-28 08: 52: 53.966 23584-23584 / com.android.sam I / System.out: {-KDni3TN4NMyGXePyp92 = {недель = {неделя1 = [отжимания алмазов, отбойные ножи, плио выпячивания, приседания плейо, планка на одну ногу (альтернативный вариант) за раунд), выпуски Plyo, отжимание и вращение, утяжеленная боковая планка (поочередно за раунд), чередующаяся отжимная планка, расширитель груди, отжимания с бриллиантами, отжимания при погружении с бомбардировщиком, отжимание на одной руке, верхний пресс, Отжимания и вращение, T отжимания, отжимание паука, отжимания с широкими руками, отжимания Burpee]}, название = индийские тренировки, категория = сила, длина = 1, цель = эту тренировку может сделать BABUJI }, -KDnhRwHjssOejrqyenP = {недель = {неделя1 = [Высокие колени, прыжки на высоту, сидение на стене, отжимания, приседания, подъемы, приседания, наклоны трицепсов на стуле, доски, высокие колени, выпады, выпады и вращение , Боковая планка (поочередно за раунд), Чередующаяся отжимная планка, Расширитель груди, Алмазные отжимания, Отжимания пикирующего бомбардировщика, Удары ногами, Подъемы лежачего трицепса, Отжимание одной рукой сбоку, Хлоп над головой, Верхний пресс, Силовые круги, гной h-up и вращение, T отжиманий, обратная планка, отжимание паука, T подъем, трицепс, отжимания на стенах, отжимания с широкими руками, Burpees]}, title = Привет тренировки, категория = сила, длина = 1, цель = Эта тренировка может быть выполнена, пока вы разговариваете по телефону!}}

03-28 08: 52: 53.967 23584-23584 / com.android.sam I / System.out: {-KDnfjROKeFAL9wccsxY = {недель = {неделя1 = [высокие колени, приседания, выпады, алмазные отжимания, лежачие трицепсы] }, title = Послеобеденный HiiT, категория = Подвижность, длина = 1, цель = дневная тренировка веса тела}, -KDps90Dn6XtJc6Co00b = {недель = {week1 = [отжимания в бриллиантах, отбойные ножи, плио выпячивания, приседания Плёно, планка на одну ногу (поочередно раунд), выпады Plyo, отжимание и вращение, утяжеленная боковая планка (поочередно на раунд), переменная отжимная планка, расширитель груди, отжимания с бриллиантами, отжимания при погружении с бомбардировщиком, отжимание на одной руке, отжимание сверху, отжимание и вращение, T отжимания, отжимание Человека-паука, отжимания в широкой руке, отжимания Burpee]}, название = название, категория = сила, длина = 1, цель = цель}}

Program.java

public class Program {
    private String title;

    private String goal;

    private String category;

    private int length;

    HashMap<String, ArrayList<String>> weeks;

    /**
     * Required public constructor
     */
    public Program() {
    }

    public Program(String title, String goal,  String category, int length, HashMap<String, ArrayList<String>> weeks) {
        this.title = title;
        this.goal = goal;
        this.category = category;
        this.length = length;
        this.weeks = weeks;
    }

    public String getTitle() {
        return title;
    }

    public String getGoal() {
        return goal;
    }

    public String getCategory() {
        return category;
    }
    public int getLength() {
        return length;
    }
    public HashMap<String, ArrayList<String>> getweeks() {
        return weeks;
    }    
}

Ответы на вопрос(2)

Ваш ответ на вопрос