Мое приложение имеет файл настроек "settings", который содержит 10 пар ключ / значение.
Ключи действуют как заголовки для пользователя, а значения являются URL-адресами
Ключ и значение могут быть изменены пользователем, например, первый параметр выглядит как «пример» со значением «example.com», когда пользователь изменяет этот параметр, ключ также изменяется. Таким образом, первая настройка станет «different_example» со значением «different_example.com». Все они хранятся в файле настроек «настройки».
До сих пор я управлял этим, открывая диалоговое окно, содержащее текущие пары ключ / значение в ArrayList, у которого есть onItemClickListener, которое выскакивает второе диалоговое окно, содержащее другой ArrayList возможных пар ключ / значение. При щелчке по новому элементу я удаляю текущий параметр, добавляю новый, а затем заново заполняю исходный ArrayList новыми параметрами. Это работает и позволяет одновременно изменять и обновлять ключ и значение, однако с двумя диалоговыми окнами это выглядит неловко.
Я бы хотел все это переключить на ListPreferences. Например, есть десять различных элементов ListPreference, по одному для каждого параметра, которые при нажатии открывают список всех возможных entryValues, а при выборе обновляют ключ из имени записи и значение из значения записи и сохраняют его под тот же файл "настроек". Я не вижу, как сохранить ListPreferences в конкретный файл, чтобы я мог позвонить
SharedPreferences settings = getSharedPreferences("settings", 0);
где угодно, хотя
Я также искал какой-то обработчик щелчков для того, что срабатывать при выборе записи, чтобы я мог вручную обновить файл «настроек», но безуспешно. Существует ли такая вещь? Или у меня есть другой способ сделать это?
Редактировать: я могу использовать OnPreferenceChange, чтобы вручную установить новое значение, но это не возвращает имя значения, например, значение, используемое в удобочитаемом списке. Есть идеи как это получить?