Retrofit - нулевой объект после GET - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы получить всех пользователей из базы данных и найти пользователя по логину в списке.Я всегда получаю информацию, что мой фактический пользователь равен нулю.Я также пытаюсь показать 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; }

1 Ответ

0 голосов
/ 05 июня 2018

Я думаю, вам нужно получить фактического пользователя после вызова метода initializeUsers в getAllUsers.

например,

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;
                }
            }
        }
    }));
}
...