我正在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");
答案 0 :(得分:1)
您不能像[0, 0, 0, 9, 0, 0, 10, 0, 0]
那样调用它,因为List<SearchDdb> ressult = presenter.searchUser("1");
方法通过改型发出异步请求。这样searchUser
会返回空searchUse
,因为尚未响应。
在viewmodel类中定义searchResult
,并在活动/片段中观察它。当响应来自api
LiveData
中的onResponse
发布了对实时数据的响应,并在您观察的地方使用它。
如果要查看教程,可以查看this article。
这里是another example。