2017-12-18 8 views
0

何か不足しているかどうかわかりません。私は、LiveDataでデータを取得している間に進行状況を公開する方法についてのサンプルやチュートリアルを見つけることができないようです。AndroidアーキテクチャのコンポーネントLiveDataの進捗状況の更新

たとえば、私のデータベースに5000レコードあり、中間の進行状況バーを表示するのではなく、データベースから読み込んでいるレコードを表示したいとします。

サンプルは、データベースまたはネットワークからデータをロードし、リストを返す方法を示しています。ただし、AsyncTaskのように進捗状況をどのように公開するかは言及されていません。

は、私の知る限り、あなたがして、すべてのデータを取得理解して:

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

私は1つが、リスナー/コールバックのいくつかの並べ替えを作成することもできますが、アーキテクチャのコンポーネントは、このことからあなたを救うべきではないと思いますか? 何か不足していますか?

答えて

0

「アプリケーションへのガイド」には、how to expose network statusの例が示されています。私はロード中にあなたの進歩率を追加することによって、次のジェネリッククラスを変更することができると思います。

//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); 
    } 
} 

また、フル実装のhereを確認することもできます。

関連する問題