I am trying to call the network on button click. I am using singleLiveEvent wrapper because the data need to be sent to the server and retrieve the response only on button click. I am using Volley for GET and POST calls. I am getting response on repository but not on onChanged method. Its getting null from repository.
Viewmodel class
public void setResponseSingleLiveEvent(String url,Map param){
responseSingleLiveEvent.setValue(mRepository.changeUserPassword(url,param).getValue());
}
Repository class
public MutableLiveData<CommonServerResponse> changeUserPassword(String url, Map params) {
this.postParams = params;
final MutableLiveData<CommonServerResponse> responseMutableLiveData = new MutableLiveData<>();
VolleycustomRequest<CommonModel> volleycustomRequest = new VolleycustomRequest<CommonModel>(Request.Method.POST,
url, CommonModel.class,
(Response.Listener<CommonModel>)
response -> {
Log.d(TAG, "changeUserPassword: "+response);
responseMutableLiveData.setValue(new CommonServerResponse(response));
},
error -> {
responseMutableLiveData.setValue(new CommonServerResponse(VolleyErrorHelper.getMessage(error)));
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
};
AppController.getInstance().addToRequestque(volleycustomRequest);
return responseMutableLiveData;
}
I want the data to be sent only on button click, not on the start of activity.