Biblioteca Android Volley: sempre precisamos repetir Response.Listener e Response.ErrorListener
Recentemente, comecei a usar o Android Volley no meu projeto. A prática comum mencionada na maioria dos tutoriais é usá-la desta maneira:
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.
}
});
Minha consulta é: precisamos repetir esse código em todos os lugares onde for necessário fazer uma solicitação. Eu estava tentando colocar em um manipulador comum onResponse e onErrorResponse, criando uma classe auxiliar:
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
});
}
Mas o problema com essa abordagem é que eu preciso passar tudo no próprio construtor, o que me faz sentir que não estou fazendo isso corretamente. Por exemplo, se eu precisar passar alguns parâmetros de consulta para a URL, sempre preciso passar a URL completa do chamador, embora ainda possa ter uma lógica comum para gerar a URL em um único local.
Alguém pode me informar qual é a melhor maneira de conseguir algo assim.