diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 8bcd488..2ae3b36 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -176,7 +176,12 @@
 
             mFilters.append(mNextFilterId++, filter);
             mFilterList.add(filter);
-            filterValid |= filter.equals(mFilter);
+
+            if (filter.equals(mFilter)) {
+                // Refresh the filter in case the title got changed
+                mFilter = filter;
+                filterValid = true;
+            }
 
             if (firstAndOnly) {
                 mFilters.append(mNextFilterId++,
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index c9a0472..ecd0196 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -66,41 +66,18 @@
 
         switch (mFilter.filterType) {
             case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
-                if (mIcon != null) {
-                    mIcon.setVisibility(View.VISIBLE);
-                    mIcon.setImageResource(R.drawable.ic_contact_list_filter_all);
-                }
-                mLabel.setText(R.string.list_filter_all_accounts);
-                mLabel.setVisibility(View.VISIBLE);
-                if (dropdown) {
-                    mIndentedLabel.setVisibility(View.GONE);
-                }
+                bindView(R.drawable.ic_contact_list_filter_all,
+                        R.string.list_filter_all_accounts);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_STARRED: {
-                if (mIcon != null) {
-                    mIcon.setVisibility(View.VISIBLE);
-                    mIcon.setImageResource(R.drawable.ic_contact_list_filter_starred);
-                }
-                mLabel.setText(R.string.list_filter_all_starred);
-                mLabel.setVisibility(View.VISIBLE);
-                if (dropdown) {
-                    mIndentedLabel.setVisibility(View.GONE);
-                }
+                bindView(R.drawable.ic_contact_list_filter_starred,
+                        R.string.list_filter_all_starred);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_CUSTOM: {
-                if (mIcon != null) {
-                    mIcon.setVisibility(View.VISIBLE);
-                    mIcon.setImageResource(R.drawable.ic_contact_list_filter_custom);
-                }
-                mLabel.setText(dropdown
-                        ? R.string.list_filter_customize
-                        : R.string.list_filter_custom);
-                mLabel.setVisibility(View.VISIBLE);
-                if (dropdown) {
-                    mIndentedLabel.setVisibility(View.GONE);
-                }
+                bindView(R.drawable.ic_contact_list_filter_custom,
+                        dropdown ? R.string.list_filter_customize : R.string.list_filter_custom);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_ACCOUNT: {
@@ -135,4 +112,22 @@
             }
         }
     }
+
+    private void bindView(int iconResource, int textResource) {
+        if (mIcon != null) {
+            if (iconResource != 0) {
+                mIcon.setVisibility(View.VISIBLE);
+                mIcon.setImageResource(iconResource);
+            } else {
+                mIcon.setVisibility(View.GONE);
+            }
+        }
+
+        mLabel.setText(textResource);
+        mLabel.setVisibility(View.VISIBLE);
+
+        if (mIndentedLabel != null) {
+            mIndentedLabel.setVisibility(View.GONE);
+        }
+    }
 }
