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


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

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

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

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

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

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 2

1 ответ:

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

Надеюсь, что это помогает.