Coder ma première application avec Firebase et essayer d'obtenir une structure imbriquée dans un seul POJO car je vais tout afficher sur le même écran, mais sans réussir à récupérer la structure interne. Voici le cliché:Hashmaps dans POJO pour prendre en charge la structure Firebase imbriquée
{
key = -KIqtlY8VQFCuYmi-fWc,
value = {
tripName=Paris in June,
cityId=paris,
arrivalDate=2310943,
duration=4,
days={
day1={
-KpMhSTQABFhbBHri0VU={
keyItem=-KGYdK_RIc3Whm5Vp5WM,
orderItem=99,
typeItem=att
},
day2={
-KpMhSTQABFhbBHri0AB={
keyItem=-KGYdK_RIc3Whm5Vp5WM,
orderItem=99,
typeItem=att
}
}
}
}
}
Voici mes classes:
@IgnoreExtraProperties
public class Trip {
@Exclude
private String id;
private String cityId;
private String tripName;
private long arrivalDate;
private int duration;
private Map<String, DayTrip> days; // = new HashMap<String, DayTrip>();
public Trip() {
}
public Trip(String cityId, String tripName, long arrivalDate, int duration, Map<String, DayTrip> days) {
this.cityId = cityId;
this.tripName = tripName;
this.arrivalDate = arrivalDate;
this.duration = duration;
this.days = days;
}
public String getId() {
return id;
}
public String getCityId() {
return cityId;
}
public String getTripName() {
return tripName;
}
public long getArrivalDate() {
return arrivalDate;
}
public int getDuration() {
return duration;
}
public Map<String, DayTrip> getDays() {
return days;
}
}
public class DayTrip {
private Map<String, ScheduledItem> scheduledItems; // = new HashMap<String, ScheduledItem>();
public DayTrip() {
}
public DayTrip(String notes, Map<String, ScheduledItem> scheduledItems) {
this.scheduledItems = scheduledItems;
}
public Map<String, ScheduledItem> getScheduledItems() {
return scheduledItems;
}
}
public class ScheduledItem {
private String keyItem;
private String typeItem;
private int orderItem;
public ScheduledItem() {
}
public ScheduledItem(String keyItem, String typeItem, int orderItem) {
this.keyItem = keyItem;
this.typeItem = typeItem;
this.orderItem = orderItem;
}
public void setKeyItem(String keyItem) {
this.keyItem = keyItem;
}
public void setTypeItem(String typeItem) {
this.typeItem = typeItem;
}
public void setOrderItem(int orderItem) {
this.orderItem = orderItem;
}
public String getKeyItem() {
return keyItem;
}
public String getTypeItem() {
return typeItem;
}
public int getOrderItem() {
return orderItem;
}
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("keyItem", keyItem);
result.put("typeItem", typeItem);
result.put("orderItem", orderItem);
return result;
}
}
Voici le code que je utilise pour inspecter l'objet:
mUserRef1 = mFirebaseRef.child("trips").child(getUid());
mUserRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snap: dataSnapshot.getChildren()) {
Trip trip = snap.getValue(Trip.class);
for (Map.Entry<String, DayTrip> day: trip.getDays().entrySet()){
for (Map.Entry<String, ScheduledItem> item: day.getValue().getScheduledItems().entrySet()) {
Log.d(TAG, item.getValue().getKeyItem());
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
La première carte est récupéré mais pas le deuxième. Il ne devient jamais le plus intérieur pour chacun.
ce qui se pointer 'mUserRef1'? –
Pointant vers tous les trajets créés par un utilisateur spécifique. – Marcos
Pouvez-vous mettre à jour ceci dans votre code? –