Самый простой способ создать свой проект в MVVM с использованием LiveData и Retrofit - это использовать LiveData в вашем классе ViewModel и Retrofit в вашем репозитории.
С точки зрения непрофессионала, вы получаете данные из своего репозитория в своем классе ViewModel и в своем классе ViewModel, передаете эти данные в MutableLiveData , и затем эти MutableLiveData можно наблюдать в вашем представлении:преобразование его в LiveData.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private MainViewModel mainViewModel;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_instruction);
mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
mainViewModel.init();
mainViewModel.getModelLiveData().observe(this, new Observer<MainResponse>() {
@Override
public void onChanged(@Nullable MainResponse mainResponse) {
// Here you write logic which implements if the ViewModel data changes.
}}
});
}
}
MainViewModel (ваша ViewModel)
public class MainViewModel extends ViewModel {
private MainRepo mainRepo;
private MutableLiveData<MainResponse> modelMutableLiveData = new MutableLiveData<>();
Disposable disposable;
public MainViewModel() {
}
public MainViewModel(MainRepo mainRepo) {
this.mainRepo = mainRepo;
}
public void init() {
modelMutableLiveData.setValue(mainRepo.callRetrofit().body());
}
public LiveData<MainResponse> getModelLiveData() {
return modelMutableLiveData;
}
}
MainRepository (ваш класс хранилища)
public class MainRepository{
public void callRetrofit() {
apiInterface =
ApiClient.getClient(ApiClient.POST_STATUS_URL).create(ApiInterface.class);
Call<ModelForPostRequest> call = apiInterface.likeItem(modelForPostRequest);
call.enqueue(new Callback<ModelForPostRequest>() {
@Override
public void onResponse(Call<ModelForPostRequest> call,
Response<ModelForPostRequest> response) {
return response;
}
@Override
public void onFailure(Call<ModelForPostRequest> call, Throwable t) {
}
});
}}