Когда вы делаете это
SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;
, у вас есть 2 ссылки на один и тот же объект. Это означает, что какой бы ссылочный объект вы ни использовали, сделанные вами изменения будут видны при использовании второй ссылки.
Подумайте об этом так: у вас есть один телевизор в комнате, но два пульта: что вы используете, вы все равно будете вносить изменения в один и тот же базовый объект (телевизор).
Ваша ссылка неверна. Ваша референтная база данных должна указывать на fnBOM ..... вместо «GTjrWgpKjoeXUt4JdBJTYP1JkVT2»
final DatabaseReference receiver =
users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2").child("fnBom...");
, и вы можете хранить каждый дочерний объект на арифметике, а последний элемент доступа - arraylist
myArrayList.get(myArrayList.size()-1);
Если вы знаете полный путь родительского узла (received/GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...
), вы можете получить только последний дочерний узел в этом месте с помощью limitToLast(1)
:
DatabaseReference ref = users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...`");
ref.orderByKey().limitToLast(1).addChildEventListener(...
Если вы не знать полный путь к родительскому узлу, нет способа получить подмножество дочерних узлов.
Наконец, я делаю логику получения последнего узла, даже если мы не знаем точной ссылки нашего дочернего
решения
. В моем сценарии есть три родительских
, поэтому я получаю общий ChilderenCount (fnBom .. node), в моем случае это 5, теперь i используется для цикла и сопоставляет его с условием, чтобы получить последний вызов этим
if(loopCount==childrenCount){
// here we can get the last child
}
спасибо всем вам, людям :)
Лучшее решение для поиска последнего выходного ребенка из firebase
blockquote>
String LASTMESSAGE=NULL; DatabaseReference dbref = Firebase.getInstance().getReference(); Query lastchield = FirebaseDatabase.child("yourchieldfororder") .orderByKey().limitToLast(1); lastchield.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot ds) { LASTMESSAGE= ds.child("message").getValue().toString(); } @Override public void onCancelled(DatabaseError databaseError) { LASTMESSAGE = "No-Last-MESSAGE-EXIT"; } });
Запрос сначала заказывает дочерний идентификатор, а затем дает вам последний id дочернего элемента в снимке данных.
Счастливое кодирование!