Android Firebase:如何将当前返回的节点密钥作为字段放入POJO中
我希望改进这个问题的标题 假设我有以下几点Android Firebase:如何将当前返回的节点密钥作为字段放入POJO中,android,firebase,hashmap,firebase-realtime-database,Android,Firebase,Hashmap,Firebase Realtime Database,我希望改进这个问题的标题 假设我有以下几点 abstract class getMessage { public getMessage(String k) { get(k); } public abstract void Success(Message message); private void get(final String k) { DatabaseReference r = DB.child("
abstract class getMessage {
public getMessage(String k) {
get(k);
}
public abstract void Success(Message message);
private void get(final String k) {
DatabaseReference r = DB.child("chat/messages/" + k);
r.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot d) {
Message msg = d.getValue(Message.class);
Success(msg);
}
@Override
public void onCancelled(DatabaseError e) {
Log.w("Get Message", e.toException());
}
});
}
}
Message类有一个字段messageid,它应该是返回节点的键,但返回的数据是该键的子项
在此之前,我插入了以下字段:
Long time = d.child("time").getValue();
Long String = d.child("text").getValue();
Long messageid = d.getKey();
Message message = new Message(time, messageid, text);
正如您在上面所看到的,我能够获取messageid并将其放入Message对象中,但是使用新的approachFirst代码块,我不知道如何做到这一点
可能吗
编辑
消息类:
您可以通过向消息类添加一个setter,然后调用该方法来设置密钥
public void setMessageid(String messageId) {
this.messageid = messageId;
}
在onDataChange方法内部
你能在课堂上发表你的信息吗?DataSnapshot.getKey返回一个字符串,因此您能够执行这个长消息id=d.getKey,这非常奇怪@威尔克:有点长,抱歉,但我现在就说。
public void setMessageid(String messageId) {
this.messageid = messageId;
}
Message msg = d.getValue(Message.class);
msg.setMessageId(d.getKey());
Success(msg);