Сохранение созданных пользователем представлений (например, кнопок и текстовых представлений) для восстановления при повторном использовании приложения

#android #android-studio

#Android #android-studio

Вопрос:

Моя активность имеет 6 представлений карт по умолчанию, каждое представление карт содержит макет ограничения, а макет ограничения содержит пару текстовых представлений. моя проблема в том, что я хотел добавить «ДОБАВИТЬ», который проведет вас через несколько шагов и в конечном итоге создаст новый cardview, но как я могу сохранить это представление, созданное пользователем, чтобы при закрытии приложения и повторном входе оно все еще было там? (Пользователи могут добавлять несколько просмотров карт)

  • Я знаком с SharedPreferences, но я не думаю, что это было бы возможно в этом случае, потому что это требует от меня сохранения данных в объявленной строке, а у пользователя просто нет доступа к этому

Я хочу сделать что-то похожее на приложения для сигнализации, когда вы можете добавлять несколько сигналов тревоги, удалять сигналы тревоги и т.д., И это будет там, даже если вы перезапустите приложение для сигнализации

Ответ №1:

Что вам нужно, так это не сохранение view самого объекта, а сохранение информации или состояния каждого объекта после его изменения пользователем. И вы правы насчет SharedPreferences , это был бы не лучший вариант для этого…

Итак, я бы рекомендовал две вещи:

  1. Сохранение и получение ваших данных 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

  1. База данных (я рекомендую 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, я обязательно проверю предоставленный вами учебник, большое спасибо.