1

Android 4.0.4 の連絡先ソースに、useCompactView という新しい設定を追加しました。連絡先の写真のサイズを縮小して、リスト ビューの画面に 2 倍の連絡先を表示できるようにします。

<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