Как я могу получить данные Firebase навалом для последующих манипуляций?

Я перехожу с SQLite на Firebase и при этом у меня есть много уже существующих данных, которые мне нужно установить в разных представлениях.

Начальный вид: алфавитный список (без дубликатов), показывающий буквы только для тех ресурсов, которые существуют под ним (то есть, если нет ресурса, начинающегося с X, X вообще не должен отображаться).

Вторичное представление: после того, как вы нажмете на букву, оно расширяет стиль аккордеона, открывая ресурсы (без дубликатов), которые начинаются с этой буквы.

Мой запрос Firebase прав в том, что я получаю правильные данные, но как мне их использовать? В идеале я хотел бы получить все темы, поместить их в TreeSet, чтобы исключить дубликаты и автоматически отсортировать их, а затем сделать то же самое, но просто получить первую букву. Я не могу изменить набор, или массив, или список из внутреннего класса, но я не могу получить к нему доступ, если создаю экземпляр изнутри либо (и это не имеет значения, потому что он вызывается свежим для каждого отдельного объекта, поэтому всегда новый набор).

Есть ли лучшая практика, по которой я скучаю?

mDatabase = FirebaseDatabase.getInstance();
mRootRef = mDatabase.getReference();
mQuoteRef = mRootRef.child("quotes");
Query topicQuery = mQuoteRef.orderByChild("Topic");

topicQuery.addChildEventListener(new ChildEventListener() {

      @Override
      public void onChildAdded(DataSnapshot dataSnapshot, String s) {
           TreeSet<String> topicList = new TreeSet<>(); <--obv not right
           TreeSet<String> firstLetterList = new TreeSet<>();
           GetQuoteInfo quote = dataSnapshot.getValue(GetQuoteInfo.class);
           if (quote.getTopic() != null) {
                topicList.add(quote.getTopic());
                firstLetterList.add(quote.getTopic().substring(0, 1));
           }
    }
}
magicalListThatContainsAllOfMyFirebaseDataThatICanNowManipulate;

1 ответ

Решение

Когда вы извлекаете данные из базы данных Firebase, вы извлекаете их как Mapа не как Set, Поэтому, чтобы решить вашу проблему, измените способ получения данных. Потому что Firebase это NoSQL databaseЛучше сказал JSON database, все структурировано как key and value, Итак, измените Set с Map и ваша проблема будет решена.

Надеюсь, поможет.

Другие вопросы по тегам