1

我在 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 消息进行了测试。我试图获取列表视图并在其上调用 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
        }
    }
});

我想要完成的是;当用户在设置中选择使用紧凑视图时,显示将自动刷新。基本上我需要重绘屏幕。如果我进入设置,请选中使用紧凑,然后更改排序顺序,当我点击后退按钮时,我会得到紧凑视图。因此,更改排序顺序会刷新显示/列表视图。但我不知道如何从我的偏好活动中做到这一点。

如果你需要更多代码,请告诉我,我会放你需要的任何东西。这是一个真正的挠头。

4

0 回答 0