Это взято из этого источника: https://gist.github.com/katowulf/6099042 . Я использовал это несколько раз в своем коде JavaEE, а также в своем приложении для Android.
Вы передаете свои fromPath и toPath . Это копирование, а не перемещение, поэтому оригинал также останется на своем первоначальном месте. Если вы хотите удалить, вы можете установить значение в fromPath сразу после System.out.println("Успех"); .
Если вы хотите выполнить перемещение, которое также приведет к удалению оригинала, вы можете использовать следующий фрагмент:
// In this piece of code, "fromPath" and "toPath" parameters act like directories. privatevoidremoveFromFirebase(final DatabaseReference fromPath, final DatabaseReference toPath, final String key) { fromPath.child(key).addListenerForSingleValueEvent(newValueEventListener() { // Now "DataSnapshot" holds the key and the value at the "fromPath". // Let's move it to the "toPath". This operation duplicates the // key/value pair at the "fromPath" to the "toPath". @Override publicvoidonDataChange(DataSnapshot dataSnapshot) { toPath.child(dataSnapshot.getKey()) .setValue(dataSnapshot.getValue(), newDatabaseReference.CompletionListener() { @Override publicvoidonComplete(DatabaseError databaseError, DatabaseReference databaseReference) { if (databaseError == null) { Log.i(TAG, "onComplete: success"); // In order to complete the move, we are going to erase // the original copy by assigning null as its value. fromPath.child(key).setValue(null); } else { Log.e(TAG, "onComplete: failure:" + databaseError.getMessage() + ": " + databaseError.getDetails()); } } }); }
вы можете прослушать событие value для своего дочернего элемента, которое вы хотите скопировать ,, и #onDataChange получит ссылку на нового дочернего элемента и установит значение DataSnapshot для этого дочернего элемента, как показано в примере кода ниже