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

时间:2017-06-28 16:29:54

标签: firebase firebase-realtime-database treeset

我正在从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 个答案:

答案 0 :(得分:0)

从Firebase数据库检索数据时,您将其检索为/usr/src/linux-hwe-4.8.0,而不是Map。因此,为了解决您的问题,请更改检索数据的方式。由于Firebase是Set,最好是NoSQL database,因此所有内容的结构都是JSON database。因此,使用key and value更改Set,您的问题就会得到解决。

希望它有所帮助。