Get last node in Firebase database Android

This might work:

DatabaseReference 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) {
        // TODO: Handle errors.
    }
});

Try this:

DatabaseReference databaseReference = FirebaseDatabase.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.
    }
});

Hope this helps!


I prefer to write and retrieve data through objects. MyObject is 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());
    }
}