Bug 1400072: Specify card size in onBind instead of onCreate. r=liuche draft
authorMichael Comella <michael.l.comella@gmail.com>
Fri, 15 Sep 2017 14:05:21 -0700
changeset 665726 6376aca2f6858261ca913fa0f613cbdb9be2b4bf
parent 665725 134037803d696b36a81fa9dcb962248a1e79b063
child 731860 9be77c8f2db1fd1562e8cecf0e0cf4cb1f51292b
push id80150
push usermichael.l.comella@gmail.com
push dateFri, 15 Sep 2017 21:05:44 +0000
reviewersliuche
bugs1400072
milestone57.0a1
Bug 1400072: Specify card size in onBind instead of onCreate. r=liuche I believe this doesn't affect this bug because I think the ViewHolders are recreated on rotation but for any other type of change, only bind will be called so for correctness, we should update the size in bind. MozReview-Commit-ID: 3ojO4TF89i4
mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPageAdapter.java
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPageAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPageAdapter.java
@@ -83,29 +83,28 @@ import java.util.List;
         );
 
         onUrlOpenListener.onUrlOpen(StringUtils.decodeUserEnteredUrl(topSite.getUrl()), EnumSet.noneOf(HomePager.OnUrlOpenListener.Flags.class));
     }
 
     @Override
     public void onBindViewHolder(TopSitesCard holder, int position) {
         holder.bind(topSites.get(position), getTopSiteAbsolutePosition(position));
+
+        final View card = holder.itemView;
+        final ViewGroup.LayoutParams layoutParams = card.getLayoutParams();
+        layoutParams.width = tilesSize;
+        layoutParams.height = tilesSize;
+        card.setLayoutParams(layoutParams);
     }
 
     @Override
     public TopSitesCard onCreateViewHolder(ViewGroup parent, int viewType) {
         final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-
         final FrameLayout card = (FrameLayout) inflater.inflate(R.layout.activity_stream_topsites_card, parent, false);
-
-        ViewGroup.LayoutParams layoutParams = card.getLayoutParams();
-        layoutParams.width = tilesSize;
-        layoutParams.height = tilesSize;
-        card.setLayoutParams(layoutParams);
-
         return new TopSitesCard(card, onUrlOpenListener, onUrlOpenInBackgroundListener);
     }
 
     @Override
     public int getItemCount() {
         return topSites.size();
     }