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?
- Firebase Error no puede tener acceso a zzanb después de usar play-services-xxx: 9.8.00
- Deshabilitar informes de fallos de Firebase
- Firebase Push Notification - Cómo mostrar mensaje multilínea en Notificación
- Firebase (FCM) cómo obtener el token
- Añadir un elemento a la lista de Firebase Databse
- Cómo recuperar campos adicionales de Firebase Token personalizado en "UserInfo"
- Recuperación de datos de la base de datos en tiempo real de Firebase en Android
- ¿Cómo subir una imagen al almacenamiento de Firebase?
- Android - Firebase jobdispatcher
- UserProfileChangeRequest setPhotoUri - ¿Cómo se hace?
- ¿Qué es '<OR>' en la pila de choque de firebase?
- ¿Cómo volver a autenticar un usuario en Firebase con Google Provider?
- Ningún setter / campo para la advertencia Base de datos Firebase Recuperar datos Llenar Listview
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.
- Android / Java: largo obtiene negativo sin superar max_value
- Actualizar la versión de Gradle en Android Studio 2.0