Как я уже понял, спиннер обновить легко и просто не получится. У меня при включении в него загружается вот этот пустой 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) {
}
});
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники