1
フィールドとしてPOJOに、現在返されたノードのキーを置くために、私はこの質問Firebase:どのように
のタイトルを改善したいと考えて、私は次のことを持っていると仮定します。
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());
}
});
}
}
メッセージクラスは、返されたノードのキーである必要があり、フィールド「メッセージID」を、持っていますが、返されたデータは、このキーの子です。この前
、私はフィールドを挿入:あなたは上記を参照することができたよう
Long time = d.child("time").getValue();
Long String = d.child("text").getValue();
Long messageid = d.getKey();
Message message = new Message(time, messageid, text);
、私は「メッセージID」を取得し、メッセージオブジェクトにそれを置くことができましたが、使用して新しいアプローチ(ファーストコードブロック)、私はこれを行う方法がわかりません。
可能ですか?
EDIT
メッセージクラス:
public class Message implements Serializable {
private String name;
private String msg;
private String icon;
private String recipient;
private String sender;
private String shared;
private Boolean group;
private Object time;
private String messageid;
private Boolean local;
private Boolean delivered;
private Boolean read;
private HashMap<String, Boolean> allowed;
private String file;
private Boolean attachment;
private Boolean state;
public Message(String Name, String Msg, String Recipient, String Sender, String Shared, Boolean Group, String Icon,
Object Time, String Messageid, Boolean Local, Boolean Delivered, Boolean Read,
HashMap<String, Boolean> Allowed, String File, Boolean Attachment, Boolean State) {
name = Name;
msg = Msg;
recipient = Recipient;
sender = Sender;
shared = Shared;
group = Group;
time = Time;
icon = Icon;
messageid = Messageid;
local = Local;
delivered = Delivered;
read = Read;
file = File;
allowed = Allowed;
attachment = Attachment;
state = State;
}
public Message() {
}
public Boolean getAttachment() {
return attachment;
}
public Boolean getState() {
return state;
}
public HashMap<String, Boolean> getAllowed() {
return allowed;
}
public String getFile() {
return file;
}
public Boolean getDelivered() {
return delivered;
}
public Boolean getRead() {
return read;
}
public Boolean getLocal() {
return local;
}
public String getMessageid() {
return messageid;
}
public String getName() {
return name;
}
public Object getTime() {
return time;
}
public String getMsg() {
return msg;
}
public Boolean getGroup() {
return group;
}
public String getRecipient() {
return recipient;
}
public String getSender() {
return sender;
}
public String getShared() {
return shared;
}
public String getIcon() {
return icon;
}
}
onDataChange
メソッド内あなたは 'message'でクラスを投稿することができますか? 'DataSnapshot.getKey()'はStringを返すので、これを行うことができるのは非常に奇妙です。 ''長いmessageid = d.getKey(); ' – Wilik
@Wilik、少し長く、謝罪します。 – Relm
@Wilik編集を参照してください。 – Relm