Библиотека Android Volley: всегда ли нужно повторять Response.Listener и Response.ErrorListener
Я недавно начал использовать Android Volley в своем проекте. Обычная практика, упомянутая в большинстве уроков, заключается в том, чтобы использовать ее следующим образом:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// do something
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something.
}
});
Мой запрос - мы должны повторять этот код везде, где нам нужно сделать запрос. Я пытался вставить общий обработчик onResponse и onErrorResponse, создав вспомогательный класс:
public class CustomJSONObjectRequest extends JsonObjectRequest {
private BaseResource resource;
private String queryId;
private String paramArgs;
public CustomJSONObjectRequest(int method, String url, JSONObject
jsonRequest,
Response.Listener<JSONObject> listener,
final Response.ErrorListener errorListener,
final Context ctx,
final BaseResource baseResource) {
super(method, url, jsonRequest,
new Response.Listener<JSONObject>() {
// some common code for all BaseResources
},
new Response.ErrorListener() {
// some common code
});
}
Но проблема с этим подходом заключается в том, что мне нужно передать каждую вещь в самом конструкторе, что заставляет меня чувствовать, что я делаю это неправильно. Например, если мне нужно передать некоторые параметры запроса для URL-адреса, мне нужно всегда передавать полный URL-адрес от вызывающей стороны, хотя у меня все еще может быть общая логика для генерации URL-адреса в одном месте.
Может кто-нибудь, пожалуйста, дайте мне знать, каков наилучший способ достижения чего-то подобного.