2017-01-11 59 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) { 

      }`` 
     });; 
相關問題