0

我有一个 listView 活动,需要应用和保存用户做出的一些首选项。我的 ListView 的每一行都包含两个 TextView(年份和国家/地区)。

我以这种方式处理 onSharedPreferenceChanged 事件:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.
        OnSharedPreferenceChangeListener() {
    public void onSharedPreferenceChanged(SharedPreferences prefs,
            String key) {
        TextView year = (TextView) findViewById(R.id.year);
        year.setTextSize(Float.parseFloat(prefs.getString(key, null)));
        TextView country = (TextView) findViewById(R.id.country);
        country.setTextSize(Float.parseFloat(prefs.getString(key, null)));
    }
});

但更改仅适用于第一行,其他与以前相同。

我应该怎么做才能为列表的每一行应用新设置?感谢您的回答。

4

1 回答 1

0

将您的代码更改为:

OnSharedPreferenceChangeListener listener; // class field

// in onResume()
SharedPreferences prefs = PreferenceManager
        .getDefaultSharedPreferences(this);
listener = new SharedPreferences.
        OnSharedPreferenceChangeListener() {
    public void onSharedPreferenceChanged(SharedPreferences prefs,
            String key) {
        TextView year = (TextView) findViewById(R.id.year);
        year.setTextSize(Float.parseFloat(prefs.getString(key, null)));
        TextView country = (TextView) findViewById(R.id.country);
        country.setTextSize(Float.parseFloat(prefs.getString(key, null)));
    }
};
prefs.registerOnSharedPreferenceChangeListener(listener);
// unregister in onPause()

有关说明,请参见此处

于 2013-03-24T19:49:52.340 回答