У меня есть изменяемые данные в реальном времени:
private MutableLiveData<Resource<LoginResponse>> loginRequestData = new MutableLiveData<>();
И я использую класс ресурсов, предоставленный Google:
public class Resource<T> {
@NonNull
public final Status status;
@Nullable
public final T data;
@Nullable
public final String message;
public 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<>(Status.SUCCESS, data, null);
}
public static <T> Resource<T> error(@NonNull String msg, @Nullable T data) {
return new Resource<>(Status.ERROR, data, msg);
}
public static <T> Resource<T> loading(@Nullable T data) {
return new Resource<>(Status.LOADING, data, null);
}
public enum Status { SUCCESS, ERROR, LOADING}
}
Мой логинОтвет класса:
public class LoginResponse {
@SerializedName("status")
@Expose
private int status;
@SerializedName("key")
@Expose
private String key;
@SerializedName("anonid")
@Expose
private String anonid;
@SerializedName("username")
@Expose
private String username;
@SerializedName("photo")
@Expose
private String photo;
@SerializedName("isBanned")
@Expose
private int isBanned;
public int getStatus() {
return status;
}
public String getKey() {
return key;
}
public String getAnonid() {
return anonid;
}
public String getUsername() {
return username;
}
public String getPhoto() {
return photo;
}
public int getIsBanned() {
return isBanned;
}
}
Как вы предполагаете, я делаю сетевой запрос с этими живыми данными. Перед сетевым запросом я хочу установить его в режим LOADING следующей строкой:
loginRequestData.setValue(Resource.loading(null));
Но я получаю следующую ошибку компилятора:
ошибка: не найден подходящий метод для метода setValue (Resource)
LiveData.setValue (Resource) не применяется (аргумент
несоответствие; Ресурс не может быть преобразован в
Ресурс) метод
MutableLiveData.setValue (Resource) не применяется
(несоответствие аргумента; ресурс не может быть преобразован в
Ресурс)
Почему я не могу передать нулевой аргумент для Resource.loading
метода?