Cómo agregar nuevos datos en firebase android

Esta es mi lógica para añadir nueva persona en base de datos firebase en tiempo real. Pero en lugar de hacer una nueva entrada es sólo la actualización de los datos antiguos con uno nuevo.

buttonSave.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /* new Firebase(Config.FIREBASE_URL) .push() .child("title") .setValue(text.getText().toString()); */ Firebase ref = new Firebase(Config.FIREBASE_URL); String name = editTextName.getText().toString().trim(); String address = editTextAddress.getText().toString().trim(); //Creating Person object Person person = new Person(); //Adding values person.setName(name); person.setAddress(address); ref.child("Person").setValue(person); } }); new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { for (DataSnapshot postSnapshot : snapshot.getChildren()) { //Getting the data from snapshot Person person = postSnapshot.getValue(Person.class); //Adding it to a string String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n"; //Displaying it on textview textViewPersons.setText(string); } } @Override public void onCancelled(FirebaseError firebaseError) { System.out.println("The read failed: " + firebaseError.getMessage()); } }); 

¿Qué está mal aquí? ¿Puede alguien ayudarme con esto?

Estás usando siempre la misma referencia

  Person person = new Person(); //Adding values person.setName(name); person.setAddress(address); ref.child("Person").setValue(person); 

Revise el documento :

El uso de setValue () de esta forma sobrescribe los datos en la ubicación especificada, incluidos los nodos secundarios.

En su caso, usted está anulando los mismos datos por este motivo.

Debe utilizar el método push() para generar un identificador único cada vez que se agrega un nuevo hijo a la referencia Firebase especificada.

  Person person = new Person(); //Adding values person.setName(name); person.setAddress(address); Firebase newRef = ref.child("Person").push(); newRef.setValue(person); 

Usted está haciendo referencia al niño "Person" y estableciendo su valor ( setValue() ) cada vez que haga clic en buttonSave , que sólo edita a ese niño. Intente utilizar push () en su lugar.

Puede agregar un nuevo hijo a sus datos, como por ejemplo:

 mAuth = FirebaseAuth.getInstance(); FirebaseUser user = mAuth.getCurrentUser(); String userId = user.getUid(); Firebase rootRef = new Firebase(Config.USER_URL); Firebase userRef = rootRef.child("Users"); Person newUser = new Person(); newUser.setFirstName(firstName); newUser.setLastName(lastName); userRef.child(userId).setValue(newUser); 

La userId varía cuando el usuario de registro es diferente, por lo tanto, siempre irás a una nueva lista de datos para un nuevo usuario registrado en userId en Usuarios.

  • Utilizar DB de Firebase con DB local
  • Firebase Remote Config: No se puede leer ningún valor, pero la búsqueda tiene éxito
  • Firebase: cuando onDisconnect evento de incendio?
  • Obtención de 'E / TokenRequestor: Tiene configuraciones relacionadas con OAuth2 erróneas. Error detallado: INVALID_AUDIENCE 'incluso después de proporcionar identificaciones de cliente precisas
  • FirebaseAuthInvalidCredentialsException al usar "Una cuenta por dirección de correo electrónico"
  • Enlaces dinámicos de Firebase manejados dos veces
  • Firebase se bloquea en Android durante el inicio de sesión anónimo
  • Data not refreshing "DynamiteModule: clase de descriptor de módulo local para com.google.firebase.auth no encontrada"
  • ¿Cómo puedo permitir que mi aplicación acceda a firebase sin un login?
  • Firebase java serialización de objetos e Inheritance
  • Google firebase - cómo compartir la base de datos con otras aplicaciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.