Использование ListView для создания экрана настроек в Android?

Я разрабатываю свое первое приложение для Android, и я бы хотел создать экран настроек.

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

Как определить такой экран?

Я понимаю, что я могу использовать ListView, но это, в основном, предназначено для обслуживания динамических данных с помощью ListAdapter, где каждый элемент обслуживается в том же формате. Кажется, возможно создать разные элементы (то есть некоторые с флажком, некоторые с двумя текстовыми строками, некоторые с иконкой), создав мой собственный ListAdapter и переопределяя getView, но это похоже на излишний. Должен ли я использовать ListView для этой цели?

Ответ 1

Нет необходимости вручную создавать и форматировать ListView - в API есть способы создания экранов настроек.

Наиболее очевидным является PreferenceActivity.

Вы можете определить все ваши предпочтения в файле XML, немного как макет, а затем загрузить их с помощью addPreferencesFromResource() или вы можете создайте несколько объектов PreferenceScreen в коде и заполните их Preference таким образом.

Лучше всего было бы посмотреть приложение API Demos, представленное в Android API. Это содержит множество хороших примеров управления предпочтениями. Здесь как он создает предпочтения из кода и здесь пример настроек XML файла. Существуют и другие примеры, показывающие более сложные вещи, такие как зависимости предпочтений и прослушиватели предпочтений.

Ответ 2

Фактически во встроенном приложении будильника для редактирования и создания сигналов тревоги есть два действия: один для создания и один для редактирования.

Действие Create Alarm - это первое с цифровыми часами. Действие "Редактировать тревогу" запускается щелчком по указанному сигналу тревоги из действия "Создать сигнал тревоги".

Edit Alarm реализует PreferenceActivity, но Create Alarm более сложный (пользовательский адаптер курсора для отображения тревог).

Посмотрите источники: