[英]Import Java class from Firebase
我了解如何使用以下代碼將類推送到Firebase:
WeekViewEvent event = new WeekViewEvent();
DatabaseReference myRef = database.getReference();
myRef.child("Events").push().setValue(event);
我想知道將此類(或基於id或字段的任何其他類)檢索回Android的最簡單方法是什么? 我敢肯定有一種簡單的方法,但是到目前為止,我發現的所有方法都不起作用:
public void importSchedule(String ownerName){
DatabaseReference events = FirebaseDatabase.getInstance().getReference("Events");
Query allOwnersEvents = events.equalTo(ownerName);
allOwnersEvents.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot post : dataSnapshot.getChildren()) {
WeekViewEvent allDay = post.child(WeekViewEvent.class); // This doesn't compile, as the type needs to be String
}
}
public void onCancelled(DatabaseError databaseError) {}
});
WeekViewEvent對象具有以下變量:
public class WeekViewEvent {
private long mId;
private Calendar mStartTime;
private Calendar mEndTime;
private String mName;
private String mLocation;
private int mColor;
private boolean mAllDay;
private String owner;
//setters and getters
}
在我的Firebase中,我要查詢的對象是:
Events{
-siX1hB9k-HpCmfO3n:{
allDay:"false",
color:"-477870",
endTime:{
endHour:4,
endMinute:10,
...},
id: 1,
location:"location",
name: "hi",
owner: "a@a.ca",
startTime:{
startHour:3,
startMinute:45,
...}
}
}
您可以嘗試以下方法來檢索您的類的對象
Map<String, Object> eventMap;
for(DataSnapshot da :dataSnapshot.getChildren())
{
if (da.getValue() instanceof Map) {
eventMap = (HashMap<String, Object>)
da.getValue();
Map<String, Object> eventMap = weekMap;
WeekViewEvent event = new WeekViewEvent();
}
}
要解決此問題,請使用以下代碼:
DatabaseReference myRef = database.getReference();
DatabaseReference myNewRef = myRef.child("Events").push();
String pushedKey = myNewRef.getKey();
myNewRef.setValue(event);
並取回數據:
public void importSchedule(String ownerName){
DatabaseReference events = FirebaseDatabase.getInstance().getReference("Events").child(pushedKey);
Query allOwnersEvents = events.equalTo(ownerName);
allOwnersEvents.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot post : dataSnapshot.getChildren()) {
String allDay = post.child("yourFiedName").getValue(String.class);
}
}
public void onCancelled(DatabaseError databaseError) {}
});
其中yourFiedName
是所需字段的名稱。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.