From ffde1471e46ac27ac5965b7dcc6e5d63071d2d82 Mon Sep 17 00:00:00 2001 From: Steven Ng Date: Fri, 16 Apr 2021 18:02:23 +0100 Subject: [PATCH] Only setup widget adapters once after inflation Bug: 185587905 Test: Switch to a new Guest user. Then, quickly open the all widgets picker and scroll to the bottom. The widgets picker no longer scroll to top even after app icons are loaded. Change-Id: I1ffef95af56935d101d12520a20be97931d1429d --- .../android/launcher3/widget/picker/WidgetsFullSheet.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index 90cd515349..8c8c49e0b8 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -167,6 +167,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet layoutInflater.inflate(contentLayoutRes, springLayout, true); RecyclerViewFastScroller fastScroller = findViewById(R.id.fast_scroller); + mAdapters.get(AdapterHolder.PRIMARY).setup(findViewById(R.id.primary_widgets_list_view)); + mAdapters.get(AdapterHolder.SEARCH).setup(findViewById(R.id.search_widgets_list_view)); if (mHasWorkProfile) { mViewPager = findViewById(R.id.widgets_view_pager); mViewPager.initParentViews(this); @@ -178,6 +180,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet findViewById(R.id.tab_work) .setOnClickListener((View view) -> mViewPager.snapToPage(1)); fastScroller.setIsRecyclerViewFirstChildInParent(false); + mAdapters.get(AdapterHolder.WORK).setup(findViewById(R.id.work_widgets_list_view)); } else { mViewPager = null; } @@ -391,15 +394,11 @@ public class WidgetsFullSheet extends BaseWidgetSheet List allWidgets = mLauncher.getPopupDataProvider().getAllWidgets(); AdapterHolder primaryUserAdapterHolder = mAdapters.get(AdapterHolder.PRIMARY); - primaryUserAdapterHolder.setup(findViewById(R.id.primary_widgets_list_view)); - AdapterHolder searchAdapterHolder = mAdapters.get(AdapterHolder.SEARCH); - searchAdapterHolder.setup(findViewById(R.id.search_widgets_list_view)); primaryUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets); updateNoWidgetsView(primaryUserAdapterHolder); if (mHasWorkProfile) { AdapterHolder workUserAdapterHolder = mAdapters.get(AdapterHolder.WORK); - workUserAdapterHolder.setup(findViewById(R.id.work_widgets_list_view)); workUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets); onActivePageChanged(mViewPager.getCurrentPage()); }