我有一个用于RecyclerView的Adapter ,我的Adapter期望两个参数一个是Context ,第二个是ArrayList 。
我的MainActivity上的ArrayList看起来像这样。 当方法onSucces完成时,我无法返回ArrayList。
ArrayList docs = new ArrayList<> ();
public ArrayList getDocumentFromServer() {
GetDocsFromServer.getAllDocs(getActivity(), new GetDocsFromServer.VolleyCallBackDocs(){
@Override
public void onSuccess(ArrayList 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;
}
当我在onCreateView (这是一个Fragment )上声明MyAdapter时,似乎是这样的。
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() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
ArrayList 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(ArrayListoficios);
void onFail(String msg);
}
我如何将这个ArrayList传递给我的Adapter 。