Я создаю приложение для Android с активностью, состоящей из смеси статических представлений и динамически созданных представлений. Активность содержит элементы пользовательского интерфейса, хранящиеся в файле XML и элементах пользовательского интерфейса, которые создаются динамически на основе содержимого класса модели. (как и в, в моем классе модели есть массив и будет создан EditText для каждого элемента массива .. и будет создан Spinner, содержащий каждый элемент в другом массиве)Сохранение и восстановление состояния экземпляра в динамически создаваемом пользовательском интерфейсе?
Какой обычный способ сохранения и восстановление состояния приложения, когда задействованы динамически созданные элементы пользовательского интерфейса? Потому что я не всегда буду знать, какие элементы пользовательского интерфейса будут существовать в любой момент! В настоящее время мой код привязки просто перезагружает данные из базы данных, когда меняется ориентация устройства, теряя любые изменения, внесенные пользователем.
У меня был хороший взгляд на Google/SO для этого, и я не нашел ничего связанного с этой проблемой.
Спасибо всем
Edit: Для всех, кто попадается это в будущем, я слегка измененный вариант подхода Yakiv и завелся с этим:
for (int i = 0; i < views.size(); i++) {
View currentView = views.get(i);
if (currentView instanceof CheckBox) {
outState.putBoolean("VIEW"+i, (((CheckBox) currentView).isChecked()));
} else if (currentView instanceof EditText) {
outState.putString("VIEW"+i, ((EditText) currentView).getText().toString());
} else if (currentView instanceof Spinner) {
//.....etc. etc.
}
}
Еще раз спасибо Yakiv за потрясающую идею.
Вы были не в своем поиске, вот ответ - http://stackoverflow.com/questions/151777/saving-activity-state-in-android. –
Спасибо за вашу ссылку, но поскольку я ответил на комментарий Якива, это для простейшего случая, когда вы знаете, какие элементы пользовательского интерфейса у вас есть, и можете легко хранить их в комплекте. Я не буду знать, какие элементы пользовательского интерфейса у меня есть, поскольку они динамически генерируются. Активность может иметь 5 edittexts или может иметь 50, что затрудняет добавление этих значений в пакет. – user2459186