Bug 1314322 - Pre: Don't reset view attributes in onBindViewHolder. r?sebastian draft
authorTom Klein <twointofive@gmail.com>
Tue, 01 Nov 2016 09:20:14 -0500
changeset 432321 cba5754d6ddda2c5b7d25e3c0f3a880c6ecd503e
parent 429179 c6ccd71126ff514bfc44b53e2217562e29a0cc38
child 432322 f11d9a1f63f065553b42126b62f610e1c7e4bf33
child 432767 743dcd9360b7d9214e1fe5d2365c94ef1fd5f300
push id34257
push userbmo:twointofive@gmail.com
push dateTue, 01 Nov 2016 16:48:48 +0000
reviewerssebastian
bugs1314322
milestone52.0a1
Bug 1314322 - Pre: Don't reset view attributes in onBindViewHolder. r?sebastian MozReview-Commit-ID: 2IKi7dHADx9
mobile/android/base/java/org/mozilla/gecko/tabs/TabsLayoutRecyclerAdapter.java
mobile/android/base/java/org/mozilla/gecko/tabs/TabsListLayout.java
--- a/mobile/android/base/java/org/mozilla/gecko/tabs/TabsLayoutRecyclerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsLayoutRecyclerAdapter.java
@@ -103,20 +103,19 @@ public class TabsLayoutRecyclerAdapter
         return tabs.get(position);
     }
 
     @Override
     public void onBindViewHolder(TabsListViewHolder viewHolder, int position) {
         final Tab tab = getItem(position);
         final TabsLayoutItemView itemView = (TabsLayoutItemView) viewHolder.itemView;
         itemView.assignValues(tab);
-        // Make sure we didn't miss any resets after animations and swipes:
-        itemView.setAlpha(1);
-        itemView.setTranslationX(0);
-        itemView.setTranslationY(0);
+        // Be careful (re)setting position values here: bind is called on each notifyItemChanged,
+        // so you could be stomping on values that have been set in support of other animations
+        // that are already underway.
     }
 
     @Override
     public TabsListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         final TabsLayoutItemView viewItem = (TabsLayoutItemView) inflater.inflate(tabLayoutId, parent, false);
         viewItem.setPrivateMode(isPrivate);
         viewItem.setCloseOnClickListener(closeOnClickListener);
 
--- a/mobile/android/base/java/org/mozilla/gecko/tabs/TabsListLayout.java
+++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsListLayout.java
@@ -106,9 +106,18 @@ public class TabsListLayout extends Tabs
             cascadeDelay += ANIMATION_CASCADE_DELAY;
         }
     }
 
     @Override
     protected boolean addAtIndexRequiresScroll(int index) {
         return index == 0 || index == getAdapter().getItemCount() - 1;
     }
+
+    @Override
+    public void onChildAttachedToWindow(View child) {
+        // Make sure we reset any attributes that may have been animated in this child's previous
+        // incarnation.
+        child.setTranslationX(0);
+        child.setTranslationY(0);
+        child.setAlpha(1);
+    }
 }