Обновление Spinnera налету из коллекции

246
09 декабря 2017, 07:56

Как я уже понял, спиннер обновить легко и просто не получится. У меня при включении в него загружается вот этот пустой List

List<String> currencies =  new ArrayList<>();

Далее подгружается из сети новый список и где то в методе

    currencies.clear();
    currencies.addAll(Data.getCurrencies());
    Collections.sort(currencies);

Выполнить обновление не могу из этого метода, только в onCreate срабатывает

SpinnerAdapter.notifyDataSetChanged();

Но тем не менее если кликнуть на спиннер , то там есть тот самый загруженный массив, но поле где стоит выбранная позиция, пустое и если что то выбрать, то там все равно ничего не появляется.
И что интересно при запросе нового списка, у меня нормально срабатывает этот код (не дебажил, но вроде нет экспешена)

    currencies.clear();
    currencies.addAll(Data.getCurrencies());
    Collections.sort(currencies);

Пробую по другому: изначально массив теперь делаю не пустым

List<String> currencies = Arrays.asList("AUD", "BGN")

спиннер в onCreate успевает заполниться, но следом вызывается код и на любой из этих строчек неизвестное исключение.

    currencies.clear();
    currencies.addAll(Data.getCurrencies());
    Collections.sort(currencies);

Может я массив изначально как то не так объявил?...

Читал про Cursor Loader и заполнение с использованием промежуточной строки, но вроде они отношение имеют только к загрузке спиннера из базы данных.

Вот адаптер , он в onCreate в активити создается.

 ArrayAdapter<String> SpinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, currencies); //Адаптер для спиннера
SpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        SpinnerOfCurrencies.setAdapter(SpinnerAdapter);
        SpinnerOfCurrencies.setSelection(currencies.indexOf("EUR")); 

//Обработчик нажатия на спиннер

 SpinnerOfCurrencies.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                                   int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.parseColor("#ffff8800")); //Цвет текста выбранной позиции в спинере
            ((TextView) parent.getChildAt(0)).setTextSize(18);
            CurrentCurrency(position);
            UploadData();
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    });
READ ALSO
Настройка logback.xml для логирования в файл

Настройка logback.xml для логирования в файл

У меня задача настороить logbackxml так, чтобы каждый день создавался новый файл log_%d{yyyy-MM-dd}

484
Кнопки приложения. Android Studio

Кнопки приложения. Android Studio

ЗдравствуйтеСегодня столкнулся с такой проблемой: В android studio, в дизайнере приложение выглядит нормально, кнопки отдельны друг от друга, но При...

190
Проверка вхождения слова в List

Проверка вхождения слова в List

Проверить надо с помощью JUnitЕсть список слов, нужно проверить, есть ли в этом списке определенное слово или нет

269