OnPreferenceChangeListenerの実装
よく使いそうなのでメモ。PreferenceActivityで、実際の設定値をSummaryに表示したい場合のOnPreferenceChangeListenerの実装。Summaryに表示するのにnewValueはユーザの意識しない値(entryValue)なので不親切。これをそのまま表示せずに選択した値(entry)をSummaryに表示する。
こんな感じに表示したい場合、設定値が変わったときに拾うリスナー(OnPreferenceChangeListener)を以下のようにOverrideする。
// 設定値をSummaryに表示 OnPreferenceChangeListener defalutSummaryListener = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { ListPreference listpref = (ListPreference) preference; int listId = listpref.findIndexOfValue((String) newValue); CharSequence[] entries; entries = listpref.getEntries(); preference.setSummary(entries[listId]); return true; } };
結構需要がありそうにもかかわらず、無駄が多いのでさくっとならないかなあAPI…。