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
--- 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();
}