如何从java中的HashMap更新Firebase数据库中的值?

如何从java中的HashMap更新Firebase数据库中的值?,java,android,firebase,firebase-realtime-database,hashmap,Java,Android,Firebase,Firebase Realtime Database,Hashmap,我想将Firebase数据库中的“isseen”从FALSE更新为TRUE,方法如下: 我在sendMessage()方法中有一个HashMap: Map messageTextBody=newhashmap(); messageTextBody.put(“message”,messageText); messageTextBody.put(“type”,“text”); messageTextBody.put(“from”,messageSenderId); messageTextBody.p

我想将Firebase数据库中的“isseen”从FALSE更新为TRUE,方法如下:

我在sendMessage()方法中有一个HashMap:

Map messageTextBody=newhashmap();
messageTextBody.put(“message”,messageText);
messageTextBody.put(“type”,“text”);
messageTextBody.put(“from”,messageSenderId);
messageTextBody.put(“to”,messagereceiveId);
messageTextBody.put(“messageID”,messagePushId);
messageTextBody.put(“时间”,saveCurrentTime);
messageTextBody.put(“日期”,saveCurrentDate);
messageTextBody.put(“isseen”,false);
messageTextBody.put(“url”,“url”);
以下是Firebase数据库节点:

下面是我更新“isseen”的功能:

ValueEventListener-seenListener;
私有void seenMessage(最终字符串userID){
seenListener=rootRef.child(MessageReceiveId).child(messageSenderId).addValueEventListener(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot dss:DataSnapshot.getChildren()){
最终消息=dss.getValue(Messages.class);
if(messages.getFrom().equals(messageSenderId)和&messages.getTo().equals(userID)){
Map hashMap=新hashMap();
hashMap.put(“isseen”,true);
dataSnapshot.getRef().updateChildren(hashMap);
}
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
@凌驾
受保护的void onPause(){
super.onPause();
reference.removeEventListener(参见Listener);
}

调用“updateChildren”方法时,您使用了dataSnapshot对象,它实际上是onDataChange方法的参数。相反,您应该使用for each循环中的DataSnapshot对象,在您的例子中是“dss”。

在调用“updateChildren”方法时,您使用了DataSnapshot对象,它实际上是onDataChange方法的参数。相反,您应该使用for each循环中的DataSnapshot对象,在您的情况下是“dss”。

此代码有什么问题?我无法将firebase数据库中的isseen从false更新为true。此代码有什么问题?我无法将firebase数据库中的isseen从false更新为true。
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", "");
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);

 }