方法总是 return 空列表

Method always return empty list

我在 android 开发中使用 mvp 设计模式,我正在使用 retrofit2 ......当我 运行 从网络获取信息的功能时,它获取信息但是returns 空列表

Response.Body 附带的响应表明代码有效

模型函数

    List<SearchDdb> searchResult;
    private Context context;
    public MainModel(Context context){this.context=context;}
    public List<SearchDdb> searchUser(String name) {
        final MainPresenter presenter = new MainPresenter(context);
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://jsonplaceholder.typicode.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Db db = retrofit.create(Db.class);
        Call<List<SearchDdb>> call = db.getUsers(name);
        call.enqueue(new Callback<List<SearchDdb>>() {
            @Override
            public void onResponse(Call<List<SearchDdb>> call, Response<List<SearchDdb>> response) {
                if(!response.isSuccessful()){
                    presenter.showDialog();
                }
               searchResult = response.body();
            }

            @Override
            public void onFailure(Call<List<SearchDdb>> call, Throwable t) {
            }
        });
        return searchResult;
    }

SearchDdb 文件

    private int id;
    private String name;
    private String grade;
    private String age;
    private String address;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getGrade() {
        return grade;
    }

    public String getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }
}

我如何调用函数 List<SearchDdb> ressult = presenter.searchUser("1");

你不能像 List<SearchDdb> ressult = presenter.searchUser("1"); 那样调用它,因为 searchUser 方法通过改造发出异步请求。这样 searchUse returns null searchResult 因为响应还没有来。

在您的视图模型 class 中定义一个 LiveData 并在您的 activity/fragment 中观察它。当响应来自 api 时 onResponse in searchUser post 对实时数据的响应并在您观察到的地方使用它。

如果你想看教程可以看this article

这里是another example