updatechildren query guardar example datos datasnapshot consultas java android json firebase firebase-database

java - query - setvalue firebase android



Firebase, classmaper: no se encontró ningún setter/field para ''UserTwo'' en la clase ''myclass'' (1)

Así que firebase sigue dándome la excepción de nullpointer, y también que no puede encontrar ningún setter / campo en la clase ''ChatModel'', aquí está mi clase de chatModel:

package edusolution.matrimony; import java.util.HashMap; import java.util.Map; /** * Created by el on 8/26/16. */ public class ChatModel { public Map<String,Object> message = new HashMap<>(); public String foruser; public String foruserAnother; public ChatModel() { } public ChatModel(String foruser,String foruserAnother) { this.foruser = foruser; this.foruserAnother = foruserAnother; } public String getForuser() { return foruser; } public void setForuser(String foruser) { this.foruser = foruser; } public String getForuserAnother() { return foruserAnother; } public void setForuserAnother(String foruserAnother) { this.foruserAnother = foruserAnother; } public Map<String, Object> getMessage() { return message; } public void setMessage(Map<String,Object> message) { this.message = message; } public Map<String,Object> toMap() { HashMap<String,Object> result = new HashMap<>(); message.put("somebody","iusedtoknow"); result.put("UserOne",foruser); result.put("UserTwo",foruserAnother); result.put("Messages",message); return result; } }

ps intenté hacer campo privado y todo pero no funcionó, aquí es cómo creo chatmodel en la base de datos:

private void createChatModel (String Name,String currentUserName) { DatabaseReference database = FirebaseDatabase.getInstance().getReference(); String Key = FirebaseDatabase.getInstance().getReference().child("chatRooms").push().getKey(); ChatModel chat = new ChatModel(Name,currentUserName); Map<String,Object> postValues = chat.toMap(); Map<String,Object> childUpdates = new HashMap<>(); childUpdates.put("/chatRooms/"+Key,postValues); database.updateChildren(childUpdates); }

y finalmente cómo estoy trieng para obtener estos datos:

public void setupChat(final String username) { //check if chat room is already exists or not databaseReference.child("chatRooms").addValueEventListener(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot s : dataSnapshot.getChildren()) { ChatModel chat = s.getValue(ChatModel.class); if(chat != null ) { Log.d("Key and hash : ",s.getKey()+" "+chat.getMessage().get(0)); if (chat.getForuser().equals(auth.getCurrentUser().getUid()) && chat.getForuserAnother().equals(username)) { Log.d("Chat is ", s.getKey()); RoomName = new String(s.getKey()); ChatEnabled = true; } else if (chat.getForuser().equals(username) && chat.getForuserAnother().equals(auth.getCurrentUser().getUid())) { Log.d("chat is also ", s.getKey()); RoomName = new String(s.getKey()); ChatEnabled = true; } else { Log.d("No chat : ", "creating chat"); } } } } public void onCancelled(DatabaseError databaseError) { Toast.makeText(getApplicationContext(),"Unable to retrieve data",Toast.LENGTH_LONG).show(); } }); }

datos de ejemplo, guardados en firebasedatabase, picture: ejemplo de imagen de datos guardados

y finalmente el error me está llegando cada vez:

08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for UserTwo found on class edusolution.matrimony.ChatModel 08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for Messages found on class edusolution.matrimony.ChatModel 08-28 18:28:51.005 31762-31762/edusolution.matrimony W/ClassMapper: No setter/field for UserOne found on class edusolution.matrimony.ChatModel 08-28 18:28:51.005 31762-31762/edusolution.matrimony D/Key and hash :: -KQGYLHb2IQ34AHkzx5G null 08-28 18:28:51.005 31762-31762/edusolution.matrimony D/AndroidRuntime: Shutting down VM 08-28 18:28:51.005 31762-31762/edusolution.matrimony W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41919700) 08-28 18:28:51.012 31762-31762/edusolution.matrimony E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerExceptio at edusolution.matrimony.Chat$1.onDataChange(Chat.java:70) at com.google.android.gms.internal.zzaie.zza(Unknown Source) at com.google.android.gms.internal.zzaje.zzcta(Unknown Source) at com.google.android.gms.internal.zzajh$1.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)


La clase POJO no tiene la misma estructura con la base de datos.

Cambie los campos de la clase ChatModel a

public class ChatModel { public Map<String,Object> Messages = new HashMap<>(); public String UserOne; public String UserTwo; // constructor // setter and getter }