diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSitePagerViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSitePagerViewHolder.kt index 724aa47308..471a0d796c 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSitePagerViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TopSitePagerViewHolder.kt @@ -45,6 +45,10 @@ class TopSitePagerViewHolder( view.top_sites_pager.apply { adapter = topSitesPagerAdapter registerOnPageChangeCallback(topSitesPageChangeCallback) + // Retain one more TopSites pages to ensure a new layout request will measure the first page also. + // Otherwise the second page with 3 TopSites will have the entire ViewPager only show + // the first row of TopSites, hiding half of those shown on the first page. + offscreenPageLimit = 1 } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSiteItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSiteItemViewHolder.kt index e337a2b4b6..7ca0da2ca5 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSiteItemViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSiteItemViewHolder.kt @@ -11,6 +11,7 @@ import android.view.View import android.widget.PopupWindow import androidx.appcompat.content.res.AppCompatResources.getDrawable import kotlinx.android.synthetic.main.top_site_item.* +import kotlinx.android.synthetic.main.top_site_item.view.* import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.feature.top.sites.TopSite @@ -92,6 +93,11 @@ class TopSiteItemViewHolder( this.topSite = topSite } + fun bind(topSitePayload: TopSitesAdapter.TopSitePayload) { + itemView.top_site_title.text = topSitePayload.newTitle + topSite = topSite.copy(title = topSitePayload.newTitle) + } + private fun onTouchEvent( v: View, event: MotionEvent, diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesAdapter.kt index 78bf438d02..5519086992 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesAdapter.kt @@ -40,7 +40,7 @@ class TopSitesAdapter( holder.bind((payloads[0] as TopSite)) } is TopSitePayload -> { - holder.itemView.top_site_title.text = (payloads[0] as TopSitePayload).newTitle + holder.bind(payloads[0] as TopSitePayload) } } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesPagerAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesPagerAdapter.kt index e7ea586c8f..e60cc4cd65 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesPagerAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/topsites/TopSitesPagerAdapter.kt @@ -37,7 +37,10 @@ class TopSitesPagerAdapter( val adapter = holder.itemView.top_sites_list.adapter as TopSitesAdapter val payload = payloads[0] as AdapterItem.TopSitePagerPayload for (item in payload.changed) { - adapter.notifyItemChanged(item.first % TOP_SITES_PER_PAGE, item.second) + adapter.notifyItemChanged( + item.first % TOP_SITES_PER_PAGE, + TopSitesAdapter.TopSitePayload(item.second.title) + ) } } }