2015-09-16 1 views
1

J'apprends à programmer moi-même et je suis confronté à un problème que je crois facile à résoudre.Store Volley Demande de données

Je fais des demandes en utilisant Google Volley et je voudrais savoir comment je stocke les informations provenant de la demande pour que je puisse travailler avec eux dans mon onCreate.

 
public void parseJSON(){ 

StringRequest getRequest = new StringRequest(Request.Method.GET,activity.getString(R.string.URL), 
      new Response.Listener() { 

       @Override 
       public void onResponse(String response) { 
        I need to store the data for use in the method onCreate. 

      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

        Log.e("Error.Response", error.toString()); 


       } 
      }); 
    request.add(getRequest); 
} 

Je ne sais pas comment transmettre les données de cette méthode séparée à main. Je commence tout seul et j'ai beaucoup étudié, mais je n'ai rien trouvé avec ce problème simple.

Merci quand même!

Répondre

1

Vous pouvez utiliser SharedPreferences pour stocker les données. Créez une méthode pour le faire.

private void sharedResponse(String response) { 
    SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = m.edit(); 
    editor.putString("Response", response); 
    editor.commit(); 
} 

Et appelez cette méthode à partir de votre onResponse.

@Override 
      public void onResponse(String response) { 
       //I need to store the data for use in the method onCreate. 
       sharedResponse(response); 
     } 

Vous pouvez accéder à ces données d'autres classes par

SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this); 
mResponse = m.getString("Response", ""); 
0

dans onResponse méthode du type de données de response est JSONArray ou JSONObject, donc ce que u ont à faire pour l'obtenir dans la chaîne est tout simplement appeler response.toString() maintenant u peut-il revenir dans votre parseJSON() comme ceci:

public String parseJSON(){ 
final String responseStr = new String(); 

     JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() { 
      @Override 
      public void onResponse(JSONArray response) { 
responseStr = response.toString(); 
       for (int i = 0; i < response.length(); i++) { 
        try { 
//parse you Json here 

} catch (JSONException e) { 
         Log.d(e.toString()); 
        } 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d(error.toString()); 
      } 
     }); 

     Volley.newRequestQueue(context).add(request); 

     return responseStr ; 

    } 

ou vous pouvez rendre une fonction statique publique dans votre activité pour définir une chaîne et l'appeler dans le parseJSON()