在我的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个等等
答案 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。