2017-01-11 62 views
4

我想从Android获取Firebase数据库中添加的最后一个节点中的项目。您可以在下面的图片中看到我不确定如何获取特定节点,因为唯一密钥是由Firebase创建的。如何引用自动创建的节点和孩子里面?非常感谢获取Firebase数据库中的最后一个节点Android

的最后一个节点

enter image description here

+0

这里是火力数据库https://androidheight.blogspot.in/2017/04/firebase-reatime-database.html – Prabhakar

回答

15

试试这个:

DatabaseReference databaseReference = Firebase.getInstance().getReference(); 
Query lastQuery = databaseReference.child("mp").orderByKey().limitToLast(1); 
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String message = dataSnapshot.child("message").getValue().toString(); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     //Handle possible errors. 
    } 
}); 

希望这有助于!

+0

的很好的例子,它给了我另一个错误...... 的http:// PRNT。 sc/duh43z – Katz

+0

将该行更改为此字符串消息= dataSnapshot.child(“message”)。getValue()。toString();' – koceeng

+1

@koceeng对不起!我忘记了,你是完全正确的。我改变了我的答案! – hotrod

1

我更喜欢通过对象编写和检索数据。 MyObject是POJO。

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot data : dataSnapshot.getChildren()) { 
     MyObject myObject = data.getValue(MyObject.class); 
     Log.i(TAG, data.getKey() + " = " + myObject.toString()); 
    } 
} 
0

试试这个它会工作
数据库参考数据库;

db=FirebaseDatabase.getInstance().getReference().child("mp"); 
     Query query = db.orderByKey().limitToLast(1); 
     query.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot child: dataSnapshot.getChildren()) { 
        Log.d("User key", child.getKey()); 
        Log.d("User val", child.child("message").getValue().toString()); 

       } 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      }`` 
     });; 
相关问题