Daljit Singh
Daljit Singh

Reputation: 533

How to update value in Firebase database from HashMap in java?

I want to update "isseen" from FALSE to TRUE in Firebase database from given below method:

I'm having this HashMap inside sendMessage() metod:

Map<String, Object> messageTextBody = new HashMap<>();
messageTextBody.put("message", messageText);
messageTextBody.put("type", "text");
messageTextBody.put("from", messageSenderId);
messageTextBody.put("to", messageRecieverId);
messageTextBody.put("messageID", messagePushId);
messageTextBody.put("time", saveCurrentTime);
messageTextBody.put("date", saveCurrentDate);
messageTextBody.put("isseen", false);
messageTextBody.put("url", "");

and here is Firebase Database nodes:

enter image description here

and here is my function to update "isseen":

ValueEventListener seenListener;
 private void seenMessage(final String userID) {

 seenListener = rootRef.child(messageRecieverId).child(messageSenderId).addValueEventListener(new ValueEventListener() {
 @Override
 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

 for (DataSnapshot dss : dataSnapshot.getChildren()) {

 final Messages messages = dss.getValue(Messages.class);

 if (messages.getFrom().equals(messageSenderId) && messages.getTo().equals(userID)) {

 Map<String, Object> hashMap = new HashMap<>();
 hashMap.put("isseen", true);
 dataSnapshot.getRef().updateChildren(hashMap);

 }
 }

 }

 @Override
 public void onCancelled(@NonNull DatabaseError databaseError) {

 }
 });

 }

 @Override
 protected void onPause() {
 super.onPause();

 reference.removeEventListener(seenListener);

 }

Upvotes: 0

Views: 1036

Answers (1)

Gaurav Singh Grewal
Gaurav Singh Grewal

Reputation: 36

While calling the 'updateChildren' method you have used the dataSnapshot object which is actually the parameter of onDataChange method. Instead you should use the object of DataSnapshot from your for-each loop, which is 'dss' in your case.

Upvotes: 2

Related Questions