Android-как динамически изменять тексты в настройках?
привет, коллеги программисты, у меня небольшая проблема с активностью предпочтений.
http://developer.android.com/reference/android/preference/PreferenceActivity.html
у меня есть только одна категория предпочтений и listPreference:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceCategory android:title="@string/basic_settings" >
<ListPreference
android:defaultValue="70"
android:entries="@array/listArray"
android:entryValues="@array/listValues"
android:key="updates_interval"
android:persistent="true"
android:summary="@string/SOME_SUMMARY"
android:title="@string/SOME_TITLE" />
</PreferenceCategory>
мне нужно, чтобы выбранное значение (значение по умолчанию или определяемое пользователем) было записано в сводке listPreference, например: Мы будем иметь не менее 70 символов.
Как я могу сделать это из кода?
любая помощь приветствуется
3 ответов
попробуйте так..
Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key
customPref.setSummary("desired string");
вот краткий пример:
Preference etp = (Preference) findPreference("the_pref_key");
etp.setSummary("New summary");
Это требует, чтобы вы отображали свои предпочтения либо из PreferenceActivity, либо из PreferenceFragment, так как findPreference() является методом этих классов. Скорее всего, вы уже это делаете.
чтобы изменить сводку каждый раз, когда пользователь изменяет фактическое предпочтение, используйте OnPreferenceChangeListener и проверьте, изменился ли соответствующий ключ в обратном вызове. После того, как он изменился, просто отредактируйте сводку как наверху.
вы можете создать подкласс ListPreference, в котором вы установите OnPreferenceChangedListener из которого у вас будет доступ к новому значению и установите текст в ListPreference. Я думаю, что setSummary() функция на ListPreference обновит текст под названием предпочтения. Если это не сработает, вы также можете переопределить getView () для реализации собственного пользовательского представления для предпочтения, на котором вы можете установить текст напрямую.