Merge "Correctly reset all wrapped CallLogListItemView attributes" into lmp-preview-dev
diff --git a/src/com/android/dialer/list/ShortcutCardsAdapter.java b/src/com/android/dialer/list/ShortcutCardsAdapter.java
index 128871d..088535a 100644
--- a/src/com/android/dialer/list/ShortcutCardsAdapter.java
+++ b/src/com/android/dialer/list/ShortcutCardsAdapter.java
@@ -31,6 +31,7 @@
 
 import com.android.dialer.R;
 import com.android.dialer.calllog.CallLogAdapter;
+import com.android.dialer.calllog.CallLogListItemView;
 import com.android.dialer.calllog.CallLogNotificationsHelper;
 import com.android.dialer.calllog.CallLogQueryHandler;
 import com.android.dialer.list.SwipeHelper.OnItemGestureListener;
@@ -188,10 +189,7 @@
         final View view = mCallLogAdapter.getView(position, convertView == null ?
                 null : wrapper.getChildAt(0), parent);
         wrapper.removeAllViews();
-        final View callLogItem = view.findViewById(R.id.call_log_list_item);
-        // Reset the internal call log item view if it is being recycled
-        callLogItem.setTranslationX(0);
-        callLogItem.setAlpha(1);
+        wrapper.prepareChildView(view);
         wrapper.addView(view);
         return wrapper;
     }
@@ -225,8 +223,7 @@
                     densityScale, pagingTouchSlop);
         }
 
-        @Override
-        public void addView(View view) {
+        private void prepareChildView(View view) {
             view.setBackgroundResource(R.drawable.rounded_corner_bg);
 
             final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
@@ -251,7 +248,13 @@
                     R.dimen.recent_call_log_item_translation_z);
             view.setTranslationZ(mPreviousTranslationZ);
 
-            super.addView(view);
+            final CallLogListItemView callLogItem =
+                    (CallLogListItemView) view.findViewById(R.id.call_log_list_item);
+            // Reset the internal call log item view if it is being recycled
+            callLogItem.setTranslationX(0);
+            callLogItem.setAlpha(1);
+            callLogItem.setClipBounds(null);
+            setChildrenOpacity(callLogItem, 1.0f);
         }
 
         @Override
@@ -346,9 +349,13 @@
 
             // If the view has any children, fade them out of view.
             final ViewGroup viewGroup = (ViewGroup) viewToClip;
+            setChildrenOpacity(viewGroup, Math.max(0, 1 - 3 * ratioHidden));
+        }
+
+        private void setChildrenOpacity(ViewGroup viewGroup, float alpha) {
             final int count = viewGroup.getChildCount();
             for (int i = 0; i < count; i++) {
-                viewGroup.getChildAt(i).setAlpha(Math.max(0, 1 - 3 * ratioHidden));
+                viewGroup.getChildAt(i).setAlpha(alpha);
             }
         }
     }