У меня есть приложение, в котором пользователь может ввести в поле EditText имя исполнителя, и он будет добавлен в таблицу sqlite. Это отлично работает, но у меня также есть счетчик на той же самой активности/макете, которую я хочу обновить с помощью этих новых изменений. Вот как мне это настроить:
У меня есть класс sqlite, который будет вставлять новое имя и метод, которые будут запрашивать таблицу и возвращать массив ArtistList.
В моей деятельности я могу получить ArtistList в spinner, используя Array Adapter при первом создании.
Пользователь вводит новое имя в EditText, обновляет таблицу sqlite, успех...
Я попытался перезагрузить ArrayList и ArrayAdapter, запустив метод sqlite ArtistList, но spinner по-прежнему не обновляется, он все еще имеет тот же старый список перед обновлением. Я знаю, что могу просто сделать artistList.add(), но это сделает список не в порядке. Я хотел бы иметь этот список в алфавитном порядке, поэтому я извлекаю ArrayList из класса sqlite, sqlite организует данные для меня.
Я попытался использовать setNotifyOnChange, я попробовал новый (и очищающий) arraylist и адаптер... ничего не работает.
Это запускается onCreate:
sqlclass helper = new sqlclass(this);
SQLiteDatabase db = helper.getWritableDatabase();
artistList = helper.getArtistList(db, tableName);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, artistList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.setNotifyOnChange(true);
Спасибо за вашу помощь!
Nevermind... Я закончил создание нового адаптера... и добавил spinner.setAdapter(адаптер). Не уверен, что это должно было быть там, потому что счетчик показывал поиск до обновления, но теперь он работает...
Извиняюсь за то, что это неопределенное, но изучите использование CursorAdapter... Я думаю, что это позволит вам повторно запросить и обновить набор данных.