我使用retrofit2来获取api。
在onResponse函数中,我想返回一个在主要活动中使用的arraylist。但我不能回到arraylist。
这是我的功能:
public void getData(){
ArrayList<ModelHomePHHS> arrayList = new ArrayList<>();
apiIterface = ApiClient.getClient().create(APIIterface.class);
Call<ListItem> call = apiIterface.getAll("Basic FjBsAEVv6w5zzNbqbp7pDqNg6sQC/LdXVajRoxf8hhg=");
call.enqueue(new Callback<ListItem>() {
@Override
public void onResponse(Call<ListItem> call, Response<ListItem> response) {
if (response.isSuccessful()) {
final ListItem item = response.body();
// ArrayList<ModelHomePHHS> arrayList = new ArrayList<>();
Log.e("server", "==load api ==");
ArrayList<ModelHomePHHS> arrayList = new ArrayList<>();
if (item != null) {
Log.e("server", "count --> " + item.getCount());
for (int i= 0; i< item.getCount(); i++){
Log.e("server", "==load id == " + item.getListTeachers().get(i).getId());
Log.e("server", "==load name == " + item.getListTeachers().get(i).getFullName());
Log.e("server", "==load avatar == " + item.getListTeachers().get(i).getAvatar());
Log.e("server", "==load saved == "+ item.getListTeachers().get(i).getSaved());
Log.e("server", "==load api ==");
arrayList.add(new ModelHomePHHS(
item.getListTeachers().get(i).getId(),
item.getListTeachers().get(i).getFullName(),
item.getListTeachers().get(i).getAvatar(),
item.getListTeachers().get(i).getSaved()
// item.getListTeachers().get(i).getSubjects()
));
}
}
}
}
@Override
public void onFailure(Call<ListItem> call, Throwable t) {
}
});
}
答案 0 :(得分:0)
如果我理解正确,你必须替换它:
public void onResponse(Call<ListItem> call, Response<ListItem> response)
为:
public static ArrayList<ModelHomePHHS> onResponse(Call<ListItem> call, Response<ListItem> response)
并在最后return arrayList;
答案 1 :(得分:0)
如果您想在代码中使用List
,则应更改call<>
。并使用
像代码中的Call<List<ListItem>> getList();
一样。
1.改变电话
@GET("your_url")
Call<List<ListItem>> getList();
2.然后尝试设置回复
public void onResponse(Call<List<ListItem>> call, Response<List<ListItem>> response) {
答案 2 :(得分:0)
尝试实施:
public void onResponse(Call<List<ListItem>> call, Response<List<ListItem>> response)