В моем списке отображаются только первые два элемента в счетчике

Я получаю с сервера список, содержащий два списка часовых поясов США и Канады. Идентификатор списка Канады равен 1, а США — 2. Эти списки содержат идентификатор строки и некоторые другие строки. Мне нужно, чтобы этот идентификатор строки был указан в счетчике, поэтому я создаю новый список, содержащий только те строки, которые мне нужны. Я помещаю идентификаторы стран в оператор switch, и он должен поместить список в spinner, и он отлично работает. Но он показывает только первые два элемента из списка.

for (int i = 0; i < list.size(); i++)
                listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());

так что в основном идея состоит в том, что я перебираю свой список с сервера, и поскольку у меня всегда есть только два списка в этом списке, в этом случае я перебираю первый список. Вот почему я жестко запрограммировал. Когда я отлаживаю, я вижу, что мой getTimeZoneModelList() содержит полный список, но когда я отлаживаю listCountryId(), он содержит только первые два элемента.

это мой полный код:

private void setUpSpinner() {
        switch (model.getCountry().getCoutryId()) {
            case 1:

                for (int i = 0; i < list.size(); i++)
                    listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());
                ArrayAdapter<String> adapterMembers = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, listCountryId);
                adapterMembers.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                binding.timezoneSpinner.setAdapter(adapterMembers);

                Log.i(TAG, "lista idjeva: " + Arrays.toString(listCountryId.toArray()));
                break;
            case 2:
                for (int i = 0; i < list.size(); i++) {
                    listCountryId.add(list.get(1).getTimeZoneModelList().get(i).getId());
                }

                ArrayAdapter<String> adapter = new ArrayAdapter<>(
                        context, android.R.layout.simple_spinner_item, listCountryId);

                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                binding.timezoneSpinner.setAdapter(adapter);
                Log.i(TAG, "lista idjeva: " + Arrays.toString(listCountryId.toArray()));

                break;
        }
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы зацикливаетесь на list, который содержит только 2 (США и Канада), но на самом деле вам нужен базовый список кодов.

Итак, In case 1: вам нужно изменить список в цикле for с

for (int i = 0; i < list.size(); i++)

К:

for (int i = 0; i < list.get(0).getTimeZoneModelList().size(); i++)

И сделайте то же самое для case 2

Это происходит потому, что ваш цикл действительно выполняется два раза. Должен быть

for (int i = 0; i < list.get(0).getTimeZoneModelList().size(); i++)
    listCountryId.add(list.get(0).getTimeZoneModelList().get(i).getId());

Даже лучше:

List<TimeZoneModel> timeZoneModelList = listCountryId.add(list.get(0).getTimeZoneModelList();
for (int i = 0; i < timeZoneModelList.size(); i++)
        listCountryId.add(timeZoneModelList.get(i).getId());

Второй способ более эффективен.

Другие вопросы по теме