如何批量检索 Firebase 数据以供后续操作?

How do I retrieve Firebase data in bulk for subsequent manipulation?

我正在从 SQLite 过渡到 Firebase,在这样做的过程中,我有很多预先存在的数据需要设置到不同的视图中。

初始视图:按字母顺序排列的列表(无重复项),仅显示存在于其下方的那些资源的字母(意味着如果没有以 X 开头的资源,则根本不应显示 X)。

第二视图:点击一个字母后,它会展开手风琴样式以显示以该字母开头的资源(无重复项)。

我的 Firebase 查询是正确的,因为我得到了正确的数据,但我该如何使用它呢?理想情况下,我想做的是获取所有主题,将它们放入 TreeSet 中以消除重复项并自动对它们进行排序,然后执行相同的操作,但只获取第一个字母。我无法从内部 class 修改集合、数组或列表,但如果我从内部实例化,我也无法访问它们(这无关紧要,因为它每次都被调用为 fresh单个对象,因此它始终是一个新集合)。

我是否缺少最佳实践?

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;

当您从 Firebase 数据库检索数据时,您将其检索为 Map,而不是 Set。因此,为了解决您的问题,请更改检索数据的方式。因为 Firebase 是 NoSQL database,更确切地说是 JSON database,所有内容的结构都是 key and value。因此,将 Set 更改为 Map,您的问题将得到解决。

希望对您有所帮助。