在onResponse()中返回一个arraylist

时间:2017-12-10 07:12:46

标签: android retrofit2

我使用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) {
        }
    });

}

3 个答案:

答案 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)