как отобразить выбранные данные в сводке настроек списка - PullRequest
3 голосов
/ 02 февраля 2012

Я новичок в программировании Android. Хорошо, в моем приложении я добавил класс предпочтений, и я вызываю предпочтение xml, которое хранится в папке xml моего приложения. Это код для него

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:title="colors" android:key="colors" android:summary="list of colors to choose from " android:entries="@array/list" android:entryValues="@array/lvalues"></ListPreference> </PreferenceScreen>

и в классе Java я написал только одну строку, это addPreferencesFromResource(R.xml.prefs);

Теперь я могу показать класс предпочтений, а также список некоторых цветов.

мой вопрос заключается в выборе предпочтения списка, оно должно показывать мне выбранное предпочтение в атрибуте итога. В настоящее время он отображается как «список цветов на выбор». я хочу показать выбранный цвет, сказать, что я выбрал белый, сводка должна показать мне белый.

пожалуйста, помогите мне.

Спасибо, Мэдди.

Ответы [ 4 ]

5 голосов
/ 03 марта 2016

вы можете сделать это в XML.Попробуйте это:

<ListPreference
android:key="pref_list"
android:title="A list of preferences"
android:summary="%s"
android:entries="@array/pref_list_entries"
android:entryValues="@array/pref_list_entries_values"
android:defaultValue="0" />

выбранное вами значение заменит "% s".Для дальнейшего разъяснения прочитайте этот пост

4 голосов
/ 19 августа 2012

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

Вот рабочая версия:

ListPreference splashList = (ListPreference) findPreference("splash");
splashList.setSummary(splashList.getEntry());

splashList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
  public boolean onPreferenceChange(Preference preference, Object newValue) {
    String nv = (String) newValue;

    if (preference.getKey().equals("splash")) {
      ListPreference splashList = (ListPreference) preference;
      splashList.setSummary(splashList.getEntries()[splashList.findIndexOfValue(nv)]);
    }
    return true;
  }

});
1 голос
/ 17 мая 2012

Вам не нужно делать расширение listPreferences.в файле PreferencesActivity, указанном в моем примере:

final ListPreference defaultTown=(ListPreference)findPreference(getString(R.string.pref_default_town_key));         
    Log.i("try",defaultTown.getKey());

    defaultTown.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        public boolean onPreferenceChange(Preference preference, Object newValue) {            
            Log.i("theApp", "Selected = " + defaultTown.getValue());  
            defaultTown.setTitle(defaultTown.getValue());
            return true;         
        } 

    });     

при изменении значения заголовок будет обновляться при входе в приложение, вам нужно будет заполнить заголовок текущими предпочтениями, хотя вместо установленных цветовпо умолчанию в вашем xml

1 голос
/ 02 февраля 2012

Вам необходимо расширить класс ListPreference и указать, что в XML-файле

class MyListPref extends ListPreference {

    public void onClick (DialogInterface dialog, int which) {
        this.setSummary(MyListPref.this.getEntry());
    }
}

Если имя класса пользовательских настроек - com.sample.MyListPref, запись xml будет

 <com.sample.MyListPref
    android:key="pref_list"
    android:title="List Preference"
    android:dialogTitle="List Pref Dialog"
    android:entries="@array/pref_items"
    android:entryValues="@array/pref_items_values"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...