Android - Как динамически менять тексты в настройках?

Привет, коллеги-программисты, у меня небольшая проблема с деятельностью Preferences.

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 символов.

Как я могу сделать это из кода?

Любая помощь приветствуется

Ответ 1

Попробуйте вот так.

 Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key
 customPref.setSummary("desired string");

Ответ 2

вот краткий пример:

Preference etp = (Preference) findPreference("the_pref_key");
etp.setSummary("New summary");

Это требует, чтобы вы отображали свои предпочтения либо из PreferenceActivity, либо из PreferenceFragment, так как findPreference() - это метод этих классов. Вы, скорее всего, уже это сделаете.

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

Ответ 3

Вы можете создать подкласс ListPreference, в котором вы установите OnPreferenceChangedListener, из которого у вас будет доступ к новому значению, и установите текст на вашем ListPreference. Я думаю, что функция setSummary() в ListPreference обновит текст под именем предпочтительности. Если это не сработает, вы также можете переопределить getView() для реализации собственного пользовательского представления для Предпочтения, на котором вы можете напрямую установить текст.