Как преобразовать данные Firebase в пользовательский объект Java? - PullRequest
0 голосов
/ 22 апреля 2019

Я читал документацию по Firebase, но она показывает только простые примеры.Что мне нужно сделать, это взять все данные из корня моей базы данных и сохранить их в массиве пользовательских объектов Java (сейчас я просто пытаюсь вставить один опрос в один объект).Каждый дочерний элемент root является Survey, и у меня есть частично настроенный класс для сбора данных.

Я понимаю, что использую этот код:

mDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
            Survey s = childSnapshot.getValue(Survey.class);
            s.toString();
        }
    }

Вот мой опрос.java класс.Я не уверен, как именно отразить структуру объектов Survey в Firebase:

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;

/*  This class stores one survey from the database  */
public class Survey implements Serializable {
    String name;
    String company;
    String description;
    String num_questions;
    String user;
    //HashMap<String,ArrayList<String>> question_strings; // Stores question title as key, with an arraylist of answer choices as the value

    public Survey() { }

    public Survey(String name, String company, String description, HashMap<String,ArrayList<String>> question_strings)
    {
        this.name = name;
        this.company = company;
        this.description = description;
        //this.question_strings = question_strings;
    }

    public void setName(String name) { this.name = name; }
    public void setCompany(String company) { this.company = company;}
    public void setDescription(String description) { this.description = description;}
    public void setNumQuestions(String num) { this.num_questions = num;}
    public void setUser(String user) { this.user = user;}

    public String getName() { return this.name;}
    public String getCompany() { return this.company;}
    public String getDescription() { return this.description;}
    public String getNumQuestions() { return this.num_questions;}
    public String getUser() { return this.user;}

public String toString()
{
    System.out.println("Name: " + name);
    System.out.println("Company: " + company);
    System.out.println("Description: " + description);
    System.out.println("Num questions: " + num_questions);


    return "";
}

}

И, наконец, вот скриншот, показывающий структуру объектов в базе данных: enter image description here

Как мне структурировать свой класс Survey для работы с Firebase?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

question_answers для меня выглядит как List<List<String>>.Вы пробовали это?

0 голосов
/ 22 апреля 2019

Из того, что я вижу:

Компания Строка

Описание - это строка

Имя - это строка

num_questions - это Int

Пользователь - Строка

SurveryId длинный

question_answers немного сложнее. Но, похоже, это список из списка строк. Итак, список>.

P.S num_questions кажется излишним, потому что вы уже можете узнать количество вопросов, получив размер списка question_answers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...