java - 改造 - GET 后的空对象
问题描述
我想从数据库中获取所有用户并通过登录列表查找用户。我总是得到信息,我的实际用户为空。我也尝试显示 Log.d("msg", usr.getLogin()) 但这是同样的问题。
我有:
private List<User> users = new ArrayList<>();
private User actualUser;
//Init API
Retrofit retrofit = RetrofitClient.getInstance();
restAPI = retrofit.create(RESTAPInterface.class);
newDeviceAcceptButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get user info
getAllUsers();
for(User usr: users){
if(UserCredentials.getInstance().getUsername().equals(usr.getLogin())) {
actualUser = new User(usr.getId(), usr.getLogin(), usr.getPassword());
Log.d("mojlogin", actualUser.getLogin());
break;
}
}
和
public void getAllUsers(){
compositeDisposable.add(restAPI.getUsers("Bearer " + TokenHolder.getInstance().getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<User>>() {
@Override
public void accept(List<User> users) throws Exception {
initializeUsers(users);
}
}));
}
和
public void initializeUsers(List<User> users){ this.users = users; }
解决方案
我认为您必须在 getAllUsers 中调用 initializeUsers 方法后获取实际用户。
喜欢,
public void getAllUsers(){ compositeDisposable.add(restAPI.getUsers("Bearer " + TokenHolder.getInstance().getToken()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<List<User>>() { @Override public void accept(List<User> users) throws Exception { Log.d("TAG", "users=>"+users.size()); initializeUsers(users); for(User usr: users){ if(UserCredentials.getInstance().getUsername().equals(usr.getLogin())) { actualUser = new User(usr.getId(), usr.getLogin(), usr.getPassword()); Log.d("mojlogin", actualUser.getLogin()); break; } } } })); }
推荐阅读
- python - Matplotlib Hexbin 对数刻度
- azure - 如果我在 MS Azure 中删除图像 A,如果共享图像库中的图像 B 基于 A,它是否仍然有效?
- mesos - Mesos 中的框架如何在他们安排的任务完成时得到通知?
- laravel - GCP应用引擎flex没有将其他服务映射到子文件夹
- python - 在 Keras 中,我想将经过训练的模型保存在我的磁盘 (Windows) 上,但收到错误消息“无效参数”?
- flutter - tab keypress/TextInputAction.next 导航到下一个输入表单
- cocoapods - 在所有 Xcode 11 项目上安装 pod 时出错
- javascript - 使用 JavaScript 的 Selenium Webdriver,如何使用 chromedriver.exe 的特定路径启动 Chrome?
- c - 如何让父进程和子进程相互监听?
- ios - Flutter 'Error running pod install' 'Pods-Runner' 目标具有传递依赖关系