По сути, вам нужен более компактный способ написания этого куска кода. Я прав?
Вы можете использовать лямбды, чтобы написать слушателей более компактным способом:
StringRequest request = new StringRequest(Request.Method.POST, "url",
(response) -> {
//Handle response
},
(error) -> {
//Handle error
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> parmas = new HashMap<>();
//here we pass params
parmas.put("action","checkIn");
return parmas;
}
};
Если метод getParams(...)
для каждого случая просто добавить ключ action
к карте параметров, вы можете создать класс, расширяющий StringRequest
с помощью этой функции.
public class CustomStringRequest extends StringRequest {
private String action;
public CustomStringRequest(int method, String url, String action, Response.Listener listener, Response.ErrorListener el) {
super(method, url, listener, el);
this.action = action;
}
@Override
protected Map<String, String> getParams() {
Map<String, String> parmas = new HashMap<>();
//here we pass params
parmas.put("action", action);
return parmas;
}
}
И тогда в каждом методе вы можете написать свой запрос следующим образом:
request = new CustomStringRequest(Request.Method.POST, "url", "checkIn",
(response) -> {
//Handle response
},
(error) -> {
//Handle error
});
Обратите внимание, что действие типа "checkIn" передано в конструктор CustomStringRequest
!
Итак, наконец, вы получите что-то вроде этого
private void checkIn() {
final RequestQueue requestQueue = Volley.newRequestQueue(Reservations.this);
final StringRequest stringRequest = new CustomStringRequest(Request.Method.POST, "url", "checkIn",
(response) -> {
//Handle response
},
(error) -> {
//Handle error
});
int socketTimeOut = 50000;// u can change this .. here it is 50 seconds
RetryPolicy retryPolicy = new DefaultRetryPolicy(socketTimeOut, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(retryPolicy);
requestQueue.add(stringRequest);
}