Ho recentemente iniziato a utilizzare Android Volley nel mio progetto. La pratica comune di cui la maggior parte dei tutorial è quello di utilizzare in questo modo:Libreria Android Volley: dobbiamo sempre ripetere Response.Listener e Response.ErrorListener
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.
}
});
La mia domanda è - Dobbiamo ripetere questo codice in ogni dove, ovunque abbiamo bisogno di fare una richiesta. Stavo cercando di mettere in un onResponse comune e gestore onErrorResponse con la creazione di una classe di supporto:
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
});
}
Ma il problema di questo approccio è che ho bisogno di passare in ogni cosa nel costruttore stesso, che sta facendo mi sento come se non lo stavo facendo correttamente. Ad esempio, se ho bisogno di passare alcuni parametri di query per l'url, ho bisogno di passare sempre l'url completo dal chiamante anche se posso ancora avere una logica comune per generare l'url in un unico posto.
Qualcuno può farmi sapere qual è il modo migliore per ottenere qualcosa di simile.
Grazie per la risposta! Un'altra query zoppa: posso inserire funzionalità comuni nei metodi di interfaccia? In modo che li escluda solo quando necessario. – pankaj
@pankaj per i metodi facoltativi, IMO, dovresti leggere [questa domanda] (http://stackoverflow.com/questions/5278013/optional-method-in-java-interface) – BNK
Penso che ci sia un equivoco. La mia domanda riguarda il mantenimento di una routine onResponse() comune, quindi non è necessario fornire onResponse() in tutte le attività. Anche con l'interfaccia, ho bisogno di fornire sempre un gestore di risposta personalizzato nelle attività. Va bene anche solo pensare in quella direzione? – pankaj