Вы можете обернуть свой класс Bean в класс Generic Resource и наблюдать его.Google упомянул об этом в своих документах:
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<>(Status.SUCCESS, data, null);
}
public static <T> Resource<T> error(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 }
}
Больше можно найти здесь: Документы Google
Сделайте так:
final MutableLiveData<Resource<MyBeanClass>> myBeanClass = new
MutableLiveData<>();
ApiInterface apiInterface =
ApiClient.getClientAuthentication().create(ApiInterface.class);
Call<Response<MyBeanClass>> call = apiInterface.getData(id);
call.enqueue(new Callback<Resource<MyBeanClass>>() {
@Override
public void onResponse(Call<MyBeanClass> call,
Response<Resource<MyBeanClass>>
response) {
if(response.body()!=null) {
myBeanClass.setValue(Resource.success(response.body()));
}
}
@Override
public void onFailure(Call<MyBeanClass> call, Throwable t) {
myBeanClass.setValue(Resource.error(t.getMessage),null);
}
});
return myBeanClass;
Теперь аналогично наблюдайте в вашем классе ViewModel Bean, обернутом в Resource.Обрабатывать успех и ошибку в соответствии с классом ресурсов Состояние