从Firebase数据库中只获取一定数量的孩子

时间:2017-01-15 22:21:33

标签: android firebase firebase-realtime-database

在我的Android应用中,我使用此代码从firebase数据库中检索帖子:

ArrayList<Post> posts = new ArrayList<>();
dbRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot dsp : dataSnapshot){
                   String author = dsp.child("author").getValue().toString();
                   String text = dsp.child("author").getValue().toString();
                    posts.add(new Post(author,text));
            }
                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

但这会返回所有帖子,如果会有很多帖子,我认为将它们全部留在内存中并不是一个好主意。有没有办法只获得一定数量的节点的孩子?例如,在开始时我想得到10个第一个,然后再加10个等等

2 个答案:

答案 0 :(得分:1)

您需要使用DataSnapShot来检索更具体的信息。

Andoird有一个FireBase指南,解释如何使用。 Firebase Android Guide

如果您希望在stackOverFlow上看到一个小例子,这里的答案似乎在做一些您想要实现的目标。 FireBase Get Children

希望这有助于您通过Android使用Firebase。

答案 1 :(得分:1)

您正在寻找limitToFirst()(或limitToLast())。

ArrayList<Post> posts = new ArrayList<>();
Query query = dbRef.orderByKey().limitToFirst(10);
query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot dsp : dataSnapshot){
               String author = dsp.child("author").getValue().toString();
               String text = dsp.child("author").getValue().toString();
                posts.add(new Post(author,text));
        }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

有关其所有功能的说明,请参阅Firebase documentation on queries