我在Android 4.0.4联系人源代码中添加了一个新设置,它名为useCompactView。它的作用是减少联系人照片的大小,这样你就可以在列表视图中在屏幕上放置两倍的联系人。
<CheckBoxPreference
android:key="useCompactView"
android:defaultValue = "false"
android:title="@string/display_options_use_compact_view"
android:summary="@string/display_options_use_compact_view_summary" />
在ContactsPreferenceActivity中,我为我的新复选框添加了一个监听器,这确实被解雇了,我测试了一个Log.d消息。我试图获取listview并在其上调用invalidateViews(),但这也不起作用。我确信必须有一种方法来获取适配器并强制刷新它。
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if("useCompactView".equals(key)) {
getListView().invalidateViews(); // This does not work
}
}
});
我想要完成的是;当用户在设置中选择“使用紧凑视图”时,将自动刷新显示。基本上我需要重绘屏幕。如果我进入设置,请选中使用紧凑,然后也更改排序顺序,当我点击后退按钮时,我得到紧凑视图。因此,更改排序顺序会刷新display / listview。但我不知道如何从我的偏好活动中做到这一点。
如果您需要更多代码,请告诉我,我会提供您需要的任何内容。这真是令人头疼的事。