Вы можете продлить любой Preference
класс.Я сделал именно то, что вы ищете, например, добавив PreferenceCategory
.Добавьте дочерние настройки (такие как PreferenceScreen
и EditTextPreference
), как обычно, с addPreference()
, переопределите их и измените / установите ресурс виджета с помощью кода с setWidgetLayoutResource()
.Естественно, ваш новый виджет должен содержать RadioButton
.Установите пользовательский OnPreferenceClickListener
с помощью setOnPreferenceClickListener()
.
Далее получите ссылку на ViewGroup
«родителя» в onCreateView()
.Затем вы можете привести его к ListView
в onBindView()
и установить на него значение OnHierarchyChangeListener
.Теперь вы получаете уведомление, когда ребенок Preference
View
добавляется к ListView
.Установите новый View.OnClickListener
для нового View
в иерархии, но только если View
содержит RadioButton
.Теперь управляйте щелчками.
На самом деле это довольно просто, если вам нужно только добавить PreferenceScreen
в качестве детей.Мне также нужно было это с EditTextPreference
, что было непросто.
Преимущества просты: вы получаете внешний вид и поведение структуры предпочтений по умолчанию вне контекста ListPreference
.A ListPreference
также выглядит иначе.Кроме того, ListPreference
может содержать только предварительно определенные значения.Так что если вам нужно выбрать EditTextPreference
с помощью переключателя, это было бы невозможно.