write updatechildren example datos borrar java android firebase firebase-database firebase-authentication

java - example - updatechildren firebase



Guardar clase en firebase (2)

En primer lugar, debe agregar a su clase de pojo, la construcción de ningún argumento necesaria para Firebase y los establecedores public setters y public getters para cada campo como este:

public class CreditCardInfoObject implements Serializable { private String title; privat eString startTime; private String endTime; private String day; public CreditCardInfoObject() {} public String getTitle() {return title;} public void setTitle(String title) {this.title = title;} public String getStartTime() {return startTime;} public void setStartTime(String startTime) {this.startTime = startTime;} public String getEndTime() {return endTime;} public void setEndTime(String endTime) {this.endTime = endTime;} public String getDay() {return day;} public void setDay(String day) {this.day = day;} }

Tenga en cuenta que no necesita campos estáticos. También tenga en cuenta que i set all your fields as private . Es una muy mala práctica establecer esos campos como públicos.

Ahora, para establecer el valor de su clase pojo, necesita crear un nuevo objeto de clase CreditCardInfoObject y usar los setters públicos. Al tener este nuevo objeto, puedes guardarlo en la base de datos de Firebase así:

CreditcardinfoOjbect obj = new CreditcardinfoOjbect(); obj.setTitle("foo"); obj.setStartTime("bar"); obj.setEndTime("1"); obj.setDay("2"); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); String uid = ""; FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); if (user != null) { uid = user.getUid(); } DatabaseReference ref = rootRef.child("users").child(uid).child("account").child("creditcards"); ref.setValue(obj);

Mi clase es CredicardinfoObject.class

public class CreditcardinfoOjbect implements Serializable { private static final long serialVersionUID = 1L; public static String title; public static String startTime; public static String endTime; public static String day; }

Esta clase solo tiene propiedades estáticas. No hay instanciación necesaria.

En mi mainActivity.class , quiero establecer los valores de la clase y luego almacenar esta base de datos de firebase. Esta es mi mainActivity.class .

CreditcardinfoOjbect.title = "foo"; CreditcardinfoOjbect.startTime = "bar"; CreditcardinfoOjbect.day = "1"; CreditcardinfoOjbect.endTime = "2"; final FirebaseDatabase database = FirebaseDatabase.getInstance(); String uid = ""; FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); if (user != null) { uid = user.getUid(); } DatabaseReference ref = database.getReference("users").child(uid).child("account").child("creditcards"); HashMap<String, Class<CreditcardinfoOjbect>> hashMap = new HashMap<>(); hashMap.put("card", CreditcardinfoOjbect.class); ref.setValue("card",hashMap );

Desafortunadamente, esto no está funcionando. ¿Cómo puedo almacenar el valor actual de una clase en Firebase?


Intente cambiar su código en la clase CreditCardInfoObject

public class CreditCardInfoObject implements Serializable { public String title; public String startTime; public String endTime; public String day; public CreditCardInfoObject() { } public CreditCardInfoObject(String title, String startTime, String endTime, String day) { this.title = title; this.startTime = startTime; this.endTime = endTime; this.day = day; } @Exclude public Map<String, Object> toMap() { HashMap<String, Object> result = new HashMap<>(); result.put("title", title); result.put("startTime", startTime); result.put("endTime", endTime); result.put("day", day); return result; } }

Cambie su código en MainActivity como a continuación

String title = "foo"; String startTime = "bar"; String endTime = "1"; String day = "2"; final FirebaseDatabase database = FirebaseDatabase.getInstance(); String uid = ""; FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); if (user != null) { uid = user.getUid(); } final Map<String, Object> dataMap = new HashMap<String, Object>(); CreditCardInfoObject creditCardInfoObject = new CreditCardInfoObject(title,startTime,endTime,day); DatabaseReference ref = database.getReference("users").child(uid).child("account"); dataMap.put("creditcards", creditCardInfoObject.toMap()); ref.updateChildren(dataMap);

Para más información: documentación de Firebase

Espero que funcionó. Siéntete libre de preguntarme cualquier cosa.