Superdry Memorandom :-p

旧「superdry memorandum :-D」です

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…。