Данные не добавляются в list.add - PullRequest
0 голосов
/ 13 октября 2018

Данные не добавляются в список.Программа получает данные с сервера GraphQL и фильтрует их через операторы switch, а затем добавляет их в соответствующий список.Однако список пуст, если к нему обращаются вне оператора switch.Если вы напечатаете один из списка в операторе switch, он будет напечатан правильно, однако если вы напечатаете его в функциях получения, он ничего не вернет.

Что с ним не так?Сфера?Я попытался выполнить инициализацию в нескольких местах, например, в одной и той же функции или в конструкторе, но результат тот же.распечатать данные.

            for (UserMediaQuery.List data : dataResponse.data().userMediaList().lists()) {
                for (UserMediaQuery.Entry entry: data.entries()) {
                    if (entry.status() == MediaListStatus.PLANNING) {
                        planningMedia.add(entry);
                        Log.d("planning", planningMedia.toString());
                    }
                }
            }

1 Ответ

0 голосов
/ 13 октября 2018

apolloClient.query(mediaQuery).enqueue выполняет код в асинхронном режиме, что означает, что он ставит в очередь запрос, и поэтому список массивов будет пустым до тех пор, пока запрос не будет выполнен и не будет успешным из другого потока.

Возможно, вы используете геттер напрямую, не дожидаясь завершения обратного вызова.В этом случае проверьте следующие возможные решения.

Если вы ожидаете, пока запрос завершит отображение чего-либо в вашем пользовательском интерфейсе, вы можете захотеть снова привязать данные к пользовательскому интерфейсу, используя что-то вроде notifyDataSetChanged()в случае RecyclerView например.Точно так же, если вы хотите использовать эти данные для чего-то другого, вам, вероятно, следует использовать механизм обратного вызова.

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...