diff --git a/src/com/android/contacts/ui/ContactsPreferencesActivity.java b/src/com/android/contacts/ui/ContactsPreferencesActivity.java
index aad7b12..23f55c7 100644
--- a/src/com/android/contacts/ui/ContactsPreferencesActivity.java
+++ b/src/com/android/contacts/ui/ContactsPreferencesActivity.java
@@ -118,6 +118,7 @@
         mList.setHeaderDividersEnabled(true);
         mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
         mContactsPrefs = new ContactsPreferences(this);
+        mAdapter = new DisplayAdapter(this);
 
         final LayoutInflater inflater = getLayoutInflater();
 
@@ -205,6 +206,8 @@
 
         mList.addHeaderView(mHeaderSeparator, null, false);
 
+        setListAdapter(mAdapter);
+
         bindView();
 
         // Start background query to find account details
@@ -342,21 +345,10 @@
 
         @Override
         protected void onPostExecute(ContactsPreferencesActivity target, AccountSet result) {
-            // Build adapter to show available groups
-            final Context context = target;
-            final DisplayAdapter adapter = new DisplayAdapter(context, result);
-            target.setListAdapter(adapter);
+            target.mAdapter.setAccounts(result);
         }
     }
 
-    public void setListAdapter(DisplayAdapter adapter) {
-        mAdapter = adapter;
-        if (mAdapter != null) {
-            mAdapter.setChildDescripWithPhones(mDisplayPhones.isChecked());
-        }
-        super.setListAdapter(mAdapter);
-    }
-
     private static final int DEFAULT_SHOULD_SYNC = 1;
     private static final int DEFAULT_VISIBLE = 0;
 
@@ -658,17 +650,19 @@
         private Context mContext;
         private LayoutInflater mInflater;
         private Sources mSources;
-
         private AccountSet mAccounts;
 
         private boolean mChildWithPhones = false;
 
-        public DisplayAdapter(Context context, AccountSet accounts) {
+        public DisplayAdapter(Context context) {
             mContext = context;
             mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             mSources = Sources.getInstance(context);
+        }
 
+        public void setAccounts(AccountSet accounts) {
             mAccounts = accounts;
+            notifyDataSetChanged();
         }
 
         /**
@@ -780,6 +774,9 @@
 
         /** {@inheritDoc} */
         public int getGroupCount() {
+            if (mAccounts == null) {
+                return 0;
+            }
             return mAccounts.size();
         }
 
