Экран предпочтений как интерфейс для базы данных? - PullRequest
3 голосов
/ 15 июля 2011

Можно ли использовать экран предпочтений в качестве простого интерфейса для чтения и записи значений в базу данных?

В принципе, мне нравится, как выглядит и работает экран настроек, но настройки не подходят для хранения всех данных, которые у меня есть.

Я знаю, как заставить его отображаться правильно, но я не уверен, как получить доступ к значениям, представленным на экране, и как предотвратить запись файла настроек.

Это даже хорошая идея?Спасибо.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Просто чтобы следить за этим для всех, кто заинтересован.Я получил это с помощью Preference.OnPreferenceChangeListener () для хранения значения в виде int или строки или чего-то еще.Например:

et_model.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener(){
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                String val = (String) newValue;
                preference.setSummary(val);
                model = val;
                return true;
            }
        });

Затем, когда пользователь нажимает «Готово», я добавляю данные в базу данных обычным способом с помощью своего вспомогательного класса базы данных SQLight.

Когда я загружаю значения избазу данных, я просто использую Preference.SetText (String) и Preference.SetSummary (String).

Я предполагаю, что он все еще пишет файл предпочтений, потому что если я не установлю текст предпочтения, он будет загружаться с любымбыл установлен последним, но я не думаю, что это проблема.Я мог бы также удалить файл настроек, когда я закрываю действие или что-то в этом роде ...

Если вы хотите хороший пример, просто посмотрите на источник для AlarmClock (теперь DeskClock). Посмотрите на SetAlarm.java и set_alarm.xml для макета (ключи сохранения и отмены) и alarm_prefs.xml для фактического макета предпочтений.

0 голосов
/ 15 июля 2011

Я не думаю, что это такая горячая идея, особенно если вы планируете иметь тон данных в вашей базе данных.Как бы то ни было, если бы вы захотели это сделать, я бы просто расширил виджеты Preference, которые вы будете использовать, и обеспечил их связь с базой данных.Например, допустим, у вас есть 10 элементов в таблице, и вы хотите выбрать один элемент (строку в базе данных), вы должны переопределить ListPreference и заполнить его содержимым соответствующей строки базы данных.

...