ListPreferenceのSummeryの動的変更
お久しぶりです。長く間が開いてしまいました。
現在androidの勉強をしている最中です。その中で出来たことを備忘録的に記録。
androidのActivityのひとつ、PreferenceActivityでListPreferenceを使っているケースについて。
事の発端は「ListActivityで設定をしても、何設定したかが判りにくいなぁ…サマリーに表示できないかなー。」ということから。
以下具体的な実装
public class OptionActivity extends PreferenceActivity implements OnPreferenceChange{ ListPreference lPref = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); CharSequence cs = getText(R.string.key); lPref = (ListPreference)findPreference(cs); lPref.setOnPreferenceChangeListener(this); } /** 中略 */ @Override public boolean onPreferenceChange(Preference preference, Object newValue) { // TODO Auto-generated method stub if(newValue != null){ preference.setSummary((CharSequence)newValue); return true; } return false; } }
目的のListPreferenceで設定した属性android:keyをCharSequenceにキャストしてfindPreferenceでインスタンス取得。このインスタンスで目的のListPreferenceをハンドルできるようになる。
OnPreferenceChangeListenerインタフェイスを実装して。
setOnPreferenceChangeListenerでListPreference実装したインタフェイスをセット
OnPreferenceChangeは設定値が変更されたときに用いられるリスナーです。