Проблема заключается в том, что каждый раз, когда вы вызываете метод setValue(), он перезаписывает значение узла в Firebase. Чтобы исправить это, вы можете использовать метод push() вместо setValue().
Метод push() создает новый узел в Firebase с уникальным идентификатором, который генерируется автоматически. Это позволяет сохранять несколько значений для одного узла, не заменяя предыдущие значения.
Вот как вы можете изменить свой код, чтобы использовать метод push():
public void sendDataToFirebase(String string) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseAuth mAuth = FirebaseAuth.getInstance();
String userId = mAuth.getCurrentUser().getUid();
DatabaseReference userRef = database.getReference("users/" + userId);
String key = userRef.push().getKey(); // генерируем уникальный идентификатор
userRef.child(key).setValue(string)
.addOnSuccessListener(aVoid -> {
Toast.makeText(this, "Данные отправлены на сервер", Toast.LENGTH_SHORT).show();
})
.addOnFailureListener(e -> {
});
}
Теперь каждый раз, когда пользователь отправляет новую строку, она будет добавляться в Firebase как новый дочерний узел для узла пользователя, а не заменять предыдущее значение.
Код отправки:
public void sendDataToFirebase(String string) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseAuth mAuth = FirebaseAuth.getInstance();
String userId = mAuth.getCurrentUser().getUid();
database.getReference("users/" + userId).setValue(string)
.addOnSuccessListener(aVoid -> {
Toast.makeText(this, "Данные отправлены на сервер", Toast.LENGTH_SHORT).show();
})
.addOnFailureListener(e -> {
});
}