【发布时间】:2019-05-27 11:03:48
【问题描述】:
我知道如何从微调器获取数据,然后将数据从 api 传递到存储库,但在我的情况下,如何在 mvvm 中正确地将数据从存储库获取到视图模型? 在存储库中,我在 MutableLiveData 中有 Currency 对象,我想从该对象中获取数据。
public class MainViewModel extends AndroidViewModel {
private CurrencyRepository currencyRepository;
public final ObservableField<String> from = new ObservableField<>();
public final ObservableField<String> to = new ObservableField<>();
public final ObservableFloat value = new ObservableFloat();
private MutableLiveData<Currency> currencyLiveData;
String TAG = "MAIN";
public MainViewModel(Application application) {
super(application);
currencyRepository = new CurrencyRepository(application);
}
public void calculateRate() {
currencyRepository.getCurrency(String.valueOf(from.get()), String.valueOf(to.get()), ApiClient.KEY);
//In this method I'm passing kind of the currency from the spinners in my view
}
存储库:
public class CurrencyRepository {
private ApiInterface apiInterface;
private String apiKey = ApiClient.KEY;
public CurrencyRepository(Application application) {
apiInterface = ApiClient.getClient();
}
public LiveData<Currency> getCurrency(String base, String target, String apiKey) {
final MutableLiveData<Currency> data = new MutableLiveData<>();
apiInterface.getCurrentCurrency(base, target, apiKey).enqueue(new Callback<Currency>() {
@Override
public void onResponse(Call<Currency> call, Response<Currency> response) {
data.setValue(response.body());
}
@Override
public void onFailure(Call<Currency> call, Throwable t) {
}
});
return data;
}
}
【问题讨论】: