gpt4 book ai didi

java - 方法总是返回空列表

转载 作者:行者123 更新时间:2023-12-02 09:36:54 29 4
gpt4 key购买 nike

我在android开发中使用mvp设计模式,并且我正在使用retrofit2...当我运行该函数从网络获取信息时,它获取信息但返回空列表

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返回 null searchResult因为回应还没有到来。

定义 LiveData在您的 View 模型类中并在您的 Activity/fragment 中观察它。当响应来自 api 时 onResponsesearchUser将该响应发布到实时数据并在您观察到的地方使用它。

如果您想查看教程,可以查看 this article .

这里是another example .

关于java - 方法总是返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431757/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com