我正在从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;
答案 0 :(得分:0)
从Firebase数据库检索数据时,您将其检索为/usr/src/linux-hwe-4.8.0
,而不是Map
。因此,为了解决您的问题,请更改检索数据的方式。由于Firebase是Set
,最好是NoSQL database
,因此所有内容的结构都是JSON database
。因此,使用key and value
更改Set
,您的问题就会得到解决。
希望它有所帮助。