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