2017-12-18 14 views
0

Ich bin mir nicht sicher, ob ich etwas vermisse. Ich kann keine Beispiele oder Tutorials finden, wie man Fortschritte beim Veröffentlichen von Daten mit LiveData macht.Android Architecture Komponenten LiveData Fortschritt Update

Zum Beispiel; Sagen wir, ich habe 5000 Datensätze in meiner Datenbank und möchte zeigen, welchen Datensatz ich aus der Datenbank lese, anstatt einen mittleren Fortschrittsbalken anzuzeigen.

Beispiele zeigen, wie Daten aus einer Datenbank oder einem Netzwerk geladen und eine Liste zurückgegeben werden. Es wird jedoch nicht erwähnt, wie der Fortschritt wie bei AsyncTask veröffentlicht wird.

Soweit ich verstehe Sie alle Daten mit bekommen:

ViewModelProviders.of(this).get(MyViewModel.class); 
model.getData().observe(this, data -> { 
    // update UI 
}); 

ich ein erraten, irgendeine Art von Hörer/Rückruf schaffen könnte, sollte aber nicht Architecture Komponenten speichern Sie das? Fehle ich etwas?

Antwort

0

Der Leitfaden zur App-Architektur zeigt ein Beispiel für how to expose network status. Ich denke, dass Sie die folgende generische Klasse ändern können, indem Sie Ihren Fortschrittsprozentsatz während des Ladens hinzufügen.

//a generic class that describes a data with a status 
public class Resource<T> { 
    @NonNull public final Status status; 
    @Nullable public final T data; 
    @Nullable public final String message; 
    private Resource(@NonNull Status status, @Nullable T data, @Nullable String message) { 
     this.status = status; 
     this.data = data; 
     this.message = message; 
    } 

    public static <T> Resource<T> success(@NonNull T data) { 
     return new Resource<>(SUCCESS, data, null); 
    } 

    public static <T> Resource<T> error(String msg, @Nullable T data) { 
     return new Resource<>(ERROR, data, msg); 
    } 

    public static <T> Resource<T> loading(@Nullable T data) { 
     return new Resource<>(LOADING, data, null); 
    } 
} 

Sie können auch eine vollständige Implementierung here überprüfen.

Verwandte Themen