我想从“sortDate”订购Firebase的结果,但实际的是随机排序的。我想按此顺序获取数据:[臀部,胸部,背部,腰部]。这是我的代码:
final DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("parts");
final DatabaseReference user = myRef.child("slavi");
user.orderByChild("sortDate");
user.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
我添加了一个firebase结构的图像。
答案 0 :(得分:1)
您可以将dataSnapshot.getChildren()
与ValueEventListener
一起使用。它将按顺序遍历子快照。它与JS SDK DataSnapshot.forEach
具有相似的语义,其中包含更详细的文档。
for (DataSnapshot child : dataSnapshot.getChildren()) {
Log.i(TAG, "test " + child.getValue());
}
或者您可以使用ChildEventListener
为每个子快照按顺序调用onChildAdded
user.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.i(TAG, "test2 " + dataSnapshot.getValue());
}
...
更新:
我看到了你的问题。您没有将侦听器附加到查询引用。
user.orderByChild("sortDate");
user.addListenerForSingleValueEvent(new ValueEventListener() {
应该是:
user.orderByChild("sortDate").addListenerForSingleValueEvent(new ValueEventListener() {
答案 1 :(得分:0)
当您调用Firebase的任何查询方法(react-native-drawer
,orderBy...
,startAt()
等)时,您会收到一个新的equalAt()
对象。您的代码不会保留对该查询对象的引用。
解决此问题:
Query