Android架构组件LiveData进度更新

时间:2017-12-18 14:53:02

标签: android android-architecture-components android-livedata

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

例如;说我的数据库中有5000条记录,想要显示我从数据库中读取的记录而不是显示中间进度条。

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

据我了解,您可以获得所有数据:

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

我想有人可以创建某种监听器/回调,但不应该没有架构组件可以避免这种情况吗? 我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

应用程序架构指南显示了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