2016-05-03 1 views
0

Jedes Mal, wenn sich mein Standort ändert, möchte ich einen Wegpunkt zur selben Root-ID hinzufügen, aber jedes Mal überschreibt er den Wegpunkt innerhalb des Stammverzeichnisses. Habe .setValue zu .updateChildren geändert aber immer noch kein Glück.Firebase-Daten werden überschrieben

Firebase mainRef = null; 
private void saveToFirebase() { 

    while (isFirstTime) { 
     // Generates root id 
     mainRef = myFirebaseRef.push(); 
     isFirstTime = false; 
    } 


    // Generates new id for waypoint 
    Firebase wayRef1 = mainRef.push(); 
    String waypointKey = wayRef1.getKey(); 


    // Create waypoint post 
    Map<String, Object> newPost = new HashMap<String, Object>(); 
    newPost.put("latitude", mLastLocation.getLatitude()); 
    newPost.put("longitude", mLastLocation.getLongitude()); 


    // POST HOLDER 
    Map<String, Object> waypointHolder = new HashMap<>(); 
    waypointHolder.put(waypointKey, newPost); 


    // PARENT OF WAYPOINTHOLDER 
    Map mParent = new HashMap(); 
    mParent.put("timeStamp", mLastUpdateTime); 
    mParent.put("waypoints", waypointHolder); 
    mainRef.updateChildren(mParent); 

} 

Antwort

0

Es sieht aus wie Sie eine hashmap von Wegpunkt Werte erstellen, aber Sie haben nicht die vorhandenen Werte in die hashmap laden, bevor Sie einen neuen hinzufügen. Deshalb erstellen Sie jedes Mal eine neue Hashmap, fügen einen Eintrag hinzu und posten sie dann in Firebase. Dies führt zu einer Hashmap mit jeweils einem Wegpunkteintrag, der im Firebase gespeichert wird.

+1

Woops, Danke für die Hilfe! –