Showing My Contacts if contact is NOT a member of it

Change-Id: I5da6ee72ddea68567028a6d129552a35a826a4f2
diff --git a/src/com/android/contacts/ui/widget/GroupMembershipView.java b/src/com/android/contacts/ui/widget/GroupMembershipView.java
index 543820d..f141046 100644
--- a/src/com/android/contacts/ui/widget/GroupMembershipView.java
+++ b/src/com/android/contacts/ui/widget/GroupMembershipView.java
@@ -86,6 +86,8 @@
     private long mFavoritesGroupId;
     private ListPopupWindow mPopup;
     private DataKind mKind;
+    private boolean mDefaultGroupVisibilityKnown;
+    private boolean mDefaultGroupVisible;
 
     public GroupMembershipView(Context context) {
         super(context);
@@ -111,6 +113,7 @@
         ValuesDelta values = state.getValues();
         mAccountType = values.getAsString(RawContacts.ACCOUNT_TYPE);
         mAccountName = values.getAsString(RawContacts.ACCOUNT_NAME);
+        mDefaultGroupVisibilityKnown = false;
         updateView();
     }
 
@@ -162,11 +165,17 @@
 
         if (mGroupList == null) {
             mGroupList = (TextView) findViewById(R.id.group_list);
-            mGroupList.setOnClickListener(this);
+            setOnClickListener(this);
         }
 
         mGroupList.setText(sb);
         setVisibility(VISIBLE);
+
+        if (!mDefaultGroupVisibilityKnown) {
+            // Only show the default group (My Contacts) if the contact is NOT in it
+            mDefaultGroupVisible = mDefaultGroupId != 0 && !hasMembership(mDefaultGroupId);
+            mDefaultGroupVisibilityKnown = true;
+        }
     }
 
     @Override
@@ -185,7 +194,8 @@
             String accountType = mGroupMetaData.getString(GroupMetaDataLoader.ACCOUNT_TYPE);
             if (accountName.equals(mAccountName) && accountType.equals(mAccountType)) {
                 long groupId = mGroupMetaData.getLong(GroupMetaDataLoader.GROUP_ID);
-                if (groupId != mFavoritesGroupId && groupId != mDefaultGroupId) {
+                if (groupId != mFavoritesGroupId
+                        && (groupId != mDefaultGroupId || mDefaultGroupVisible)) {
                     String title = mGroupMetaData.getString(GroupMetaDataLoader.TITLE);
                     boolean checked = hasMembership(groupId);
                     mAdapter.add(new GroupSelectionItem(groupId, title, checked));