我想使用startAt()
和endAt()
方法,但我不完全了解它们是如何工作的。
假设我有当前的数据库
"users" : {
"someUser1" : {
"email" : "oneEmail",
"someOtherInfo" : "OneInfo",
"username" : "someUser1"
}
"someUser2" : {
"email" : "twoEmail",
"someOtherInfo" : "twoInfo",
"username" : "someUser2"
},
"someUser3" : {
"email" : "threeEmail",
"someOtherInfo" : "threeInfo",
"username" : "someUser3"
},
"someUser4" : {
"email" : "fourEmail",
"someOtherInfo" : "fourInfo",
"username" : "someUser4"
}
}
现在这些数据将被附加到RecyclerView上。所以最初我只想获得前2个元素(someUser1
和someUser2
),然后当用户滚动到recyclerView的底部时,它会获得其他2个元素。
recyclerView已完全设置并正常工作,我只需要从DB获取元素,但我不明白这两种方法是如何工作的,如果我这样做的话:
users = myDB.getReference("users").orderByChild("email").startAt(0).endAt(2);
这是否足以获得前两个元素?
感谢
答案 0 :(得分:2)
您可以limitToLast()
执行此操作,以下是代码:
DatabaseReference node;
node.limitToLast(AppConstants.SIZE)
.orderByChild(YourOwnSortMethod)
.addValueEventListener(mValueEventListener);
private ValueEventListener mTypingValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.i(TAG, "onDataChange: " + snapshot.getValue());
// Your code
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "onCancelled: " + error.getMessage());
}
};
这是做什么的,
数据集= A,C,B,E,F
orderByChild
(升序)= A,B,C,E,F
limitToLast
(2)= E,F
答案 1 :(得分:0)
请参阅以下附件:
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance()
.getReference();
DatabaseReference mRef = mDatabaseReference.child("order")
node.limitToLast(2).orderByChild("timestamp")
.addValueEventListener(mValueEventListener);
private ValueEventListener mTypingValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.i(TAG, "onDataChange: " + snapshot.getValue());
// Your code
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "onCancelled: " + error.getMessage());
}
};