Лучший способ получить / отформатировать данные, используя Firebase Java API

м используюFirebase для хранения данных наAndroid проект, и используяFirebase Java API иметь дело с данными. Я'я не уверен, что яЯ делаю это настолько эффективно, насколько это возможно, и яМне бы хотелось получить несколько советов о передовых методах извлечения и форматирования данных. мойFirebase репозиторий выглядит примерно так ....

-POLLS
    NUMPOLLS - 5
    (pollskey) - NAME - Poll1
            NUMELECTIONS - 2
            ELECTIONS 
                (electionskey) - NAME - Election1
                        NUMNOMINATIONS - 2
                        NUMVOTERS - 2
                        NUMBERTOELECT - 1
                        VOTERS - (votesrkey) - NAME - Charles
                                         NUMBER - (678) 333-4444
                                 .
                                 .
                                 .
                                 (voterskey) - ...
                        NOMINATIONS - (nominationskey) - NAME - Richard Nixon
                                              NUMBEROFVOTES - 2
                                       .
                                       .
                                       .
                                      (nominationskey) - ...
            .
            .
            .
            (electionskey) - ...
     .
     .
     .
     (pollskey) - ...

Так, например, здесь яя пытаюсь получить все данные из опроса, чтобы перечислить имя опроса, это 's имена выборов, а также имена кандидатов и количество голосов для каждых выборов. Я получаю уровень ОПРОСОВDataSnapshot в течениеOnCreate() функция моей основной деятельности, как это ...

private static final Firebase polls = pollsFirebase.child("Polls");
protected void onCreate(Bundle savedInstanceState) {

        polls.addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot snapshot) {
                for (DataSnapshot child : snapshot.getChildren()) {
                    if (!child.getName().equals("NumPolls")) {
                        createPollTableAndHeaders(child);
                    }
                }

            }
        });
    }

Затем я продолжаю считывать отдельные части данных, которые мне нужны, последовательно вызываяgetValue() наDataSnapshotsи проверка ключей полученногоHashMaps...

private void createPollTableAndHeaders(DataSnapshot poll) {
    String pollName = "";
    int numPolls;
    Object p = poll.getValue();
    if (p instanceof HashMap) {
        HashMap pollHash = (HashMap) p;
        if (pollHash.containsKey("Name")) {
            pollName = (String) pollHash.get("Name");
        } 
        if (pollHash.containsKey("Elections")) {
            HashMap election = (HashMap) pollHash.get("Elections");
            Iterator electionIterator = election.values().iterator();
            while (electionIterator.hasNext()) {
                Object electionObj = electionIterator.next();
                if (electionObj instanceof HashMap) {
                    HashMap electionHash = (HashMap) electionObj;
                    if (electionHash.containsKey("Name")) {
                        String electionName = (String) electionHash.get("Name");
                    }
                }
            };
        }
    }

Это кажется довольно утомительным способом углубиться в структуру данных, и ямне интересно, если естьлучший способ. Я

мы виделиgetValue(java.lang.Class valueType) Метод в документации, но убежищене смог заставить его работать в моем случае, так как яЯ работаю с составными объектами, а не только с контейнерами для примитивных типов. Как функция узнает, чтоFirebase данные для присваивания, какие переменные-члены объекта модели? Это соответствуетFirebase имена ключей с переменными-членами, и поэтому должны ли они быть одинаковыми с учетом регистра? Как бы это иметь дело сFirebase сгенерированные имена ключей, как создаются при нажатии наList? Как построить модель объектов для составных объектов?

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

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