Android体系结构组件Livedata进度更新



我不确定我是否缺少任何东西。我似乎找不到有关如何在使用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);
    }
}

另外,您可以在此处检查完整的实现。

最新更新