Android 为什么我能';t使用模型类设置数据库中特定子级的值?
这是一个消息模型类Android 为什么我能';t使用模型类设置数据库中特定子级的值?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这是一个消息模型类 public class MessModel { String message; public MessModel() {} public MessModel(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage
public class MessModel {
String message;
public MessModel() {}
public MessModel(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
我试图使用setter方法更新消息键的特定值(最后一个值)
这是我的密码
Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataa) {
for (DataSnapshot snap : dataa.getChildren()) {
MessModel messages = snap.getValue(MessModel.class);
String mes = messages.getMessage(); //here I can get the last message
messages.setMessage("updated Message"); //here is the problem , why it doesn't work ?
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我不知道为什么setter方法不起作用?
什么是设定所有孩子价值的最佳方式?或设置特定值?要解决此问题,请使用以下代码:
Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataa) {
for (DataSnapshot snap : dataa.getChildren()) {
MessModel messages = snap.getValue(MessModel.class);
String mes = messages.getMessage(); //here I can get the last message
messages.setMessage("updated Message");
snap.getRef().setValue(messages);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
使用String类可以更简单地完成此操作:
Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataa) {
for (DataSnapshot snap : dataa.getChildren()) {
snap.child("message").getRef().setValue(updated Message);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
你的代码没有在我能看到的任何地方调用
setValue()
。那么我可以在哪里调用它呢?如何使用setter方法?很抱歉,我还是Firebase的初学者。谢谢您的帮助,第二个解决方案运行良好。。但是第一个不起作用。。“lastmess.setValue(消息)中无法使用setValue;”我投了赞成票,但很抱歉,在我找到我的主要问题的答案之前,我不能接受它作为正确答案:如何使用模型类设置值?我的意思是使用setter方法!使用我的第一个解决方案时出现了什么错误?代码的工作方式应该与第二个相同。我不能在这里使用setValuelastmesss.setValue(消息)代码>它以红色显示,显示无法解析方法“setValue”,我理解。请看我的最新答案。现在能用了吗?