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
}
}
});
私が達成しようとしていることは次のとおりです。ユーザーが設定で [コンパクト ビューを使用] を選択すると、表示が自動的に更新されます。基本的に、画面を再描画する必要があります。設定に入ると、[コンパクトを使用] をオンにし、並べ替え順序も変更します。[戻る] ボタンを押すと、コンパクト ビューが表示されます。したがって、並べ替え順序を変更すると、表示/リストビューが更新されます。しかし、好みのアクティビティからこれを行う方法がわかりません。
さらにコードが必要な場合は、教えてください。必要なものは何でも入れます。これは本物のヘッドスクラッチャーです。