2017-08-04 43 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

相关问题