お父さん勝手に日記見ないでよ!

2009-09-18

ListPreferenceのSummeryの動的変更

| 15:57

お久しぶりです。長く間が開いてしまいました。

現在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は設定値が変更されたときに用いられるリスナーです。

トラックバック - http://d.hatena.ne.jp/father_POP/20090918/1253257041