2016-07-21 5 views
1

Ich habeMit ServerValue.TIMESTAMP in meinem Android App

Zusammenhang viele Fragen Stackoverflow lesen
ServerValue.TIMESTAMP 

aber ich kann nicht herausfinden, wie es in meiner App zu verwenden.

Ich brauche den timeStamp der Erstellung eines Beitrags. Der timeStamp sollte an derselben Stelle wie bei uid, author etc. des Posts hinzugefügt werden.

-Code-Schnipsel, die den Pfosten die Feuerbasis Datenbank schreibt:

private void writeNewPost(String userId, String username, String title, String body) { 
    // Create new post at /user-posts/$userid/$postid and at 
    // /posts/$postid simultaneously 
    String key = mDatabase.child("posts").push().getKey(); 
    Post post = new Post(userId, username, title, body); 
    Map<String, Object> postValues = post.toMap(); 

    Map<String, Object> childUpdates = new HashMap<>(); 
    childUpdates.put("/posts/" + key, postValues); 
    childUpdates.put("/user-posts/" + userId + "/" + key, postValues); 

    mDatabase.updateChildren(childUpdates); 
} 

Meine Post.java Datei

@IgnoreExtraProperties 
public class Post { 

public String uid; 
public String author; 
public String title; 
public String body; 
public int starCount = 0; 
public Map<String, Boolean> stars = new HashMap<>(); 
public Long timeStamp; 

public Post() { 
    // Default constructor required for calls to DataSnapshot.getValue(Post.class) 
} 

public Post(String uid, String author, String title, String body) { 
    this.uid = uid; 
    this.author = author; 
    this.title = title; 
    this.body = body; 
} 

// [START post_to_map] 
@Exclude 
public Map<String, Object> toMap() { 
    HashMap<String, Object> result = new HashMap<>(); 
    result.put("uid", uid); 
    result.put("author", author); 
    result.put("title", title); 
    result.put("body", body); 
    result.put("starCount", starCount); 
    result.put("stars", stars); 

    return result; 
} 
// [END post_to_map] 

}

Wie soll ich

ServerValue.TIMESTAMP 

in meinem Code, um die Zeit der Erstellung von Post zu bekommen.

Antwort

3

ServerValue.TIMESTAMP ist einfach ein Platzhalterwert. Wenn der Firebase-Server eine Aktualisierungsanforderung verarbeitet und ServerValue.TIMESTAMP als Wert findet, wird er durch die aktuelle Serveruhr ersetzt.

In Ihrem writeNewPost() Methode können Sie eine Zeile hinzufügen die Erstellungszeit einstellen:

Map<String, Object> postValues = post.toMap(); 
postValues.put("timeStamp", ServerValue.TIMESTAMP); 

Wenn Sie Post.toMap() nur verwenden, Beiträge zu erstellen, und nicht für Updates, könnten Sie eine ähnliche Aussage setzen dort statt in writeNewPost().

+1

Ich möchte, dass die Variable timeStamp (in Post.java) sollte den Wert der Post-Erstellung enthalten. Wie mache ich das –

0

können Sie versuchen, diese

//Declaring the timestamp variable 

public Map timestamp; 


//add it to your constructor 
public Post(String uid, String author, String title, String body, Map timestamp) {  
    this.uid = uid; 
    this.author = author; 
    this.title = title; 
    this.body = body; 
    this.timestamp = timestamp 
} 

zu Ihrem Post.java hinzuzufügen Und schließlich können Sie den Zeitstempel den Wert Ihrer toMap() Funktion auf die gleiche Weise für die Sterne HashMap tat hinzufügen.

Schließlich wurden Sie jemals Ihre Werte für die anderen Variablen wie Autor und etc initialisieren Sie können dann diese Zeile hinzufügen.

Map<String, String> timestamp = ServerValue.TIMESTAMP; 

Und auch sicherstellen, dass Sie Zeitstempel zu Ihrer writeNewPost() Methode übergeben.

Verwandte Themen