#android #android-studio
#Android #android-studio
Вопрос:
Моя активность имеет 6 представлений карт по умолчанию, каждое представление карт содержит макет ограничения, а макет ограничения содержит пару текстовых представлений. моя проблема в том, что я хотел добавить «ДОБАВИТЬ», который проведет вас через несколько шагов и в конечном итоге создаст новый cardview, но как я могу сохранить это представление, созданное пользователем, чтобы при закрытии приложения и повторном входе оно все еще было там? (Пользователи могут добавлять несколько просмотров карт)
- Я знаком с SharedPreferences, но я не думаю, что это было бы возможно в этом случае, потому что это требует от меня сохранения данных в объявленной строке, а у пользователя просто нет доступа к этому
Я хочу сделать что-то похожее на приложения для сигнализации, когда вы можете добавлять несколько сигналов тревоги, удалять сигналы тревоги и т.д., И это будет там, даже если вы перезапустите приложение для сигнализации
Ответ №1:
Что вам нужно, так это не сохранение view
самого объекта, а сохранение информации или состояния каждого объекта после его изменения пользователем. И вы правы насчет SharedPreferences
, это был бы не лучший вариант для этого…
Итак, я бы рекомендовал две вещи:
-
Сохранение и получение ваших данных Cardviews должно быть из пользовательского класса (например:
Alarm
), который имеет свойства.package my.app.example; class Alarm{ long time; boolean isOn; String label; public Alarm(long time, boolean isOn, String label){ this .time = time; this .isOn = isOn; this .label = label; } }
И вы можете использовать его следующим образом:
long timeFromDatabase = ...;//get time value from database
boolean isOnFromDatabase= ...;//get isOn value from database
String labelFromDatabase= ...;//get label value from database
Alarm alarm1 = new Alarm(timeFromDatabase, isOnFromDatabase, labelFromDatabase);
После этого вы можете добавить каждый объект сигнализации в список, а затем передать его своему Adapter
- База данных (я рекомендую
Sqlite
илиJson
), в которую вы будете сохранять данные о каждом сигнале тревоги (время, isOn, …)
Замечание Alarm
— это просто пример! Не стесняйтесь использовать любое имя и свойства, которые подходят вашему проекту
Смотрите это руководство, оно похоже на то, что я предложил:https://www.javatpoint.com/android-sqlite-tutorial он сохраняет контакты в автономной базе данных sqlite и получает их позже.
Комментарии:
1. Во время поиска я узнал о Firebase (я думаю, что это и рекомендуемые вами базы данных похожи), но я все еще не уверен, как это сработает, например, мое приложение сохранит данные каждого объекта на нем, и при запуске оно отправит их и создаст каждый из них?
2. Также я хотел знать, ссылаются ли на «AlarmManager» как на пользовательский класс? причина, по которой я пытаюсь найти другое решение, кроме баз данных, заключается в том, что мое приложение будет скорее автономным приложением, поэтому я хотел спросить, как, например, приложение Alarm делает это без баз данных?
3. — База данных Sqlite — это автономная база данных, которая сохраняется во внутренней памяти устройства, проверьте эту ссылку developer.android.com/training/data-storage/sqlite
4. Нет, я не имел в виду AlarmManager, смотрите Мой обновленный ответ и руководство в конце
5. Я прочитал обновление и понял суть. Я уже прочитал больше о sqlite, я обязательно проверю предоставленный вами учебник, большое спасибо.