Properly restoring contact filter title from shared prefs

Change-Id: Ifb7f4b2cd1b021a16d7c87eb8a372989027c2857
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);
+        }
+    }
 }