Как я могу получить данные 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
и ваша проблема будет решена.
Надеюсь, поможет.