2015-05-07 19 views
1

我開始在Android開發的旅程中,所以可能會做這一切都是錯誤的。我試圖使用Volley獲取一組數據並顯示它是正確的。在另一個類/方法中訪問排列響應

我需要做的下一步是使用數據提出進一步的請求。 第一個請求獲得一個運動隊列表。 然後,我想要爲每個球隊提出請求以獲得球員。

理想情況下,我想要做的是做出第一個請求並返回JSONobject與另一個類一起使用。我不知道我會如何做到這一點。

teamData.getTeams(
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 

       //i want to get this out somehow 
       JSONObject thing = response; 

}//end on response 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        //Show error or whatever... 
       } 
      }); 

如果需要的話,我很高興對此進行擴展。

回答

0

Volley排隊請求,以便在較舊的成功或錯誤返回後觸發請求。 因此,您可以在老年人的成功中排列新的請求。

例:在你的團隊的要求的迴應你添加爲你做JSONObject thing = response;

這是我的女巫的爲例導入多個項目,一個新的請求,然後導入每個項目的相關信息:

public void importProjects() { 
    Response.Listener<JSONArray> jsonArrayResponseListener; 
    String url = Globals.getApiBaseUrl() + GET_PROJECTS_URL; 
    jsonArrayResponseListener = new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      try { 
       ArrayList<Project> projects = MyJsonParser.getInstance().parseProjects(response); 

       if (projects.size() > 0) { 
        for (Project p : projects) { 
         importProject(p); //####### HERE IS THE KEY :: this methode is the same of this one. It calls other volley request.#######// 
        } 
       } 
      } catch (Exception e) { 
       Log.e("SyncRngine", "THIS IS AN ERROR"); 
       e.printStackTrace(); 
      } 
     } 
    }; 
    Response.ErrorListener responseError; 
    responseError = new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    }; 

    url = formatUrl(url, params); 
    Log.i("URL IMPORT PROJECTS", url); 
    MyVolleyJsonArrayRequest customRequest = new MyVolleyJsonArrayRequest(Request.Method.GET, url, jsonArrayResponseListener, responseError); 
    MyVolley.getInstance(activity.getApplicationContext()).addToRequestQueue(customRequest); 

} 

現在importProject(Project p)的金額:

public void importProject(final Project project) { 
    String url = Globals.getApiBaseUrl() + GET_PROJECT_URL; 

    Response.Listener<JSONArray> jsonArrayResponseListener; 
    jsonArrayResponseListener = new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      try { 
       useProjectInfos(response); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    Response.ErrorListener responseError; 
    responseError = new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    }; 
    url = url + "/" + project.getProjectID(); 
    url = formatUrl(url, params); 
    MyVolleyJsonArrayRequest customRequest = new MyVolleyJsonArrayRequest(Request.Method.GET, url, jsonArrayResponseListener, responseError); 
    MyVolley.getInstance(activity.getApplicationContext()).addToRequestQueue(customRequest); 

} 
+0

非常好,工作。我之前嘗試過類似的東西,但似乎沒有工作。現在我必須弄清楚如何顯示數據。我已經列出了球隊列表,但無法讓球員展示。有時間做一些閱讀我想。 – marklbentley

+0

你可以在你的活動中創建一個函數來實現這個過程,並在你的成功或你的錯誤偵聽器中調用它,如下所示: 'if(activity instanceof MainActivity){ ((MainActivity)activity).updateHeaderUiComponents(); }' 請把它解決。祝你好運 :) –

相關問題