Android架构组件LiveData进度更新

Android架构组件LiveData进度更新,android,android-architecture-components,android-livedata,Android,Android Architecture Components,Android Livedata,我不确定我是否遗漏了什么。我似乎找不到任何关于如何在使用LiveData提取数据的同时发布进度的示例或教程 比如,;假设我的数据库中有5000条记录,并希望显示我正在从数据库中读取的记录,而不是显示中间进度条 示例显示如何从数据库或网络加载数据并返回列表。但是,没有提到如何像在AsyncTask上一样发布进度 据我所知,您通过以下方式获取所有数据: ViewModelProviders.of(this).get(MyViewModel.class); model.getData().observ

我不确定我是否遗漏了什么。我似乎找不到任何关于如何在使用LiveData提取数据的同时发布进度的示例或教程

比如,;假设我的数据库中有5000条记录,并希望显示我正在从数据库中读取的记录,而不是显示中间进度条

示例显示如何从数据库或网络加载数据并返回列表。但是,没有提到如何像在AsyncTask上一样发布进度

据我所知,您通过以下方式获取所有数据:

ViewModelProviders.of(this).get(MyViewModel.class);
model.getData().observe(this, data -> {
  // update UI
});
我想可以创建某种侦听器/回调,但架构组件不应该让您免于这种情况吗?
我遗漏了什么吗?

应用程序架构指南显示了一个示例。我想您可以通过在加载时添加进度百分比来修改以下泛型类

//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);
    }
}
//描述具有状态的数据的泛型类
公共类资源{
@非空的公共最终状态状态;
@可为空的公共最终T数据;
@可为空的公共最终字符串消息;
私有资源(@NonNull Status Status、@Nullable T data、@Nullable String message){
这个状态=状态;
这个数据=数据;
this.message=消息;
}
公共静态资源成功(@NonNull T data){
返回新资源(成功、数据、空);
}
公共静态资源错误(字符串msg,@Nullable T data){
返回新资源(错误、数据、消息);
}
公共静态资源加载(@Nullable T data){
返回新资源(加载、数据、空);
}
}

此外,您还可以检查完整的实现。

很高兴看到这种java方法。