【发布时间】:2017-08-04 02:14:20
【问题描述】:
我有一个Adapter 用于RecyclerView,我的Adapter 期望两个参数一个是Context,第二个是一个ArrayList。
我的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;
}
当我在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<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。
【问题讨论】:
标签: android callback android-recyclerview android-volley