Ciao Vorrei modularizzare le richieste di volley in modo da non mischiare il codice di presentazione dell'attività con le richieste di scarica. Tutti gli esempi che ho visto, la richiesta di scarica viene posizionata, ad esempio, sull'evento OnClick da un pulsante di attività.Android Volley - Come isolare le richieste in un'altra classe
voglio dire questo codice (tratto da fonte diff):
// prepare the Request
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
// display response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Error.Response", response);
}
}
);
// add it to the RequestQueue
queue.add(getRequest);
Il mio punto qui è come ottenere questo codice tutte le richieste di un'altra classe e proprio esempio la classe e chiamare il makeRequest. Ho già provato questo, ma fallisce. Non so se è una cosa in relazione con il contesto, ma viene a mancare ...
ho fatto questo:
public void onClick(View v) {
try{
Utils varRequest = new Utils(getApplicationContext());
String url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
varRequest.makeRequest(url);
mitexto.setText(varRequest.miError);
}
catch(Exception excepcion) {
System.out.println(excepcion.toString());
}
}
... e la classe Utils è:
public class Utils {
public Context contexto;
public String miError;
private RequestQueue queue ;
public Utils (Context contextoInstancia){
contexto = contextoInstancia;
queue = Volley.newRequestQueue(contexto);
}
public void makeRequest(String url){
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// TODO Auto-generated method stub
miError="Response => "+response.toString();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
miError="Response => "+error.networkResponse.toString();
}
});
queue.add(jsObjRequest);
}
}
Can qualcuno mi dice cosa sto facendo male, o come strutturare il codice?
Grazie in anticipo.
asincrona è asincrono ... mitexto.setText (varRequest.miError); dovrebbe essere chiamato onResponse o onErrorResponse ... o classe che ha onClick dovrebbe implementare Response.Listener ... – Selvin
hehehe, quindi invece 'Response.Listener' dovrebbe usare 'CallBack '? dov'è la differenza? –
Selvin
Penso che la risposta di Rohit Patil in http://stackoverflow.com/questions/35628142/how-to-make-separate-class-for-volley-library-and-call-all-method-of-volley-from è la quello che vuoi – SajithK