2017-08-04 52 views
0

我有一個AdapterRecyclerView,我Adapter人希望兩個參數之一是Context,第二個是ArrayList凌空回調返回一個ArrayList中,然後將其發送到RecyclerView.Adapter

我的MainActivity上的ArrayList看起來像這樣。當onSucces方法完成時,我無法返回ArrayList。

ArrayList<Doc> docs = new ArrayList<>(); 
public ArrayList<Doc> getDocumentFromServer() { 
    GetDocsFromServer.getAllDocs(getActivity(), new GetDocsFromServer.VolleyCallBackDocs(){ 
     @Override 
     public void onSuccess(ArrayList<String> documentos) { 
      docs = new ArrayList<>(); 
      for (int i = 0; i < documentos.size(); i++) { 
       Doc item = new Doc(); 
       item.setTittle("list item" + i); 
       item.setDescription("DESCRIPTION"); 
       item.setPosition (i); 
       docs.add(item); 
      } 

     } 
     @Override 
     public void onFail(String msg) { 

     } 
    }); 
    return docs; 
} 

當我宣佈在onCreateViewMyAdapter(這是一個Fragment)似乎是這樣的。

MyAdapter adapter = new MyAdapter(getActivity(), getDocumentFromServer()); 

現在我從Volley數據庫獲得的所有數據和我設置的所有這些信息爲ArrayList

public class GetOficiosFromServer{ 
public static void getAllWorks(final Context context, final VolleyCallBack callBack) { 
    RequestQueue rq = Volley.newRequestQueue(context); 

    StringRequest strReq = new StringRequest(Request.Method.GET, AppConfig.URL_GET_WORKS, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONArray jsonArray = new JSONArray(response); 
       ArrayList<String> oficios = new ArrayList<>(); 
       for(int i=0; i< jsonArray.length(); i++) { 
        JSONObject jsonObject = jsonArray.getJSONObject(i); 
        String name = jsonObject.getString("nombre"); 
        oficios.add(name); 
       } 
       callBack.onSuccess(oficios); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    }); 
    rq.add(strReq); 
} 
public interface VolleyCallBack{ 
    void onSuccess(ArrayList<String>oficios); 
    void onFail(String msg); 
} 

如何傳遞這個ArrayList<String>到我Adapter

回答

0

ArrayList<String>寫一個構造函數作爲參數。像這樣的東西

public class MyAdapter extends ArrayAdapter<String>{ 

    Context ctx; 
    ArrayList<Doc> docs; 
    ArrayList<String> officios; 

    public MyAdapter(Context c,ArrayList<Doc> documents, ArrayList<String> offs){ 
     this.ctx = c; 
     this.docs = documents; 
     this.officios = offs 
    } 
} 

你可以在你的適配器初始化時通過ArrayList<String>

MyAdapter adapter = new MyAdapter(getActivity(), getDocumentFromServer(),<Your_array_list_here>); 
+0

我從我的MainActivity更新我的代碼,以前的版本是靜態的東西,y把VolleyRequest放入。當onSucces方法完成時,我無法返回ArrayList。 @SripadRaj – JosCarrillo

相關問題