diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java index f291a80eee..79637197a1 100644 --- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java +++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java @@ -183,7 +183,10 @@ public class AlphabeticalAppsList { private final List mPredictedAppComponents = new ArrayList<>(); // The set of predicted apps resolved from the component names and the current set of apps private final List mPredictedApps = new ArrayList<>(); + // The set of apps returned from a discovery service while searching private final List mDiscoveredApps = new ArrayList<>(); + // The suggested app returned by a discovery service + private AppDiscoveryAppInfo mSuggestedApp; // The of ordered component names as a result of a search query private ArrayList mSearchResults; @@ -288,6 +291,9 @@ public class AlphabeticalAppsList { @NonNull AppDiscoveryUpdateState state) { mAppDiscoveryUpdateState = state; switch (state) { + case SUGGESTED: + mSuggestedApp = app != null ? new AppDiscoveryAppInfo(app) : null; + break; case START: mDiscoveredApps.clear(); break; @@ -435,6 +441,7 @@ public class AlphabeticalAppsList { // Process the predicted app components mPredictedApps.clear(); if (mPredictedAppComponents != null && !mPredictedAppComponents.isEmpty() && !hasFilter()) { + int suggestedAppsCount = mSuggestedApp != null ? 1 : 0; for (ComponentKey ck : mPredictedAppComponents) { AppInfo info = mComponentToAppMap.get(ck); if (info != null) { @@ -445,11 +452,16 @@ public class AlphabeticalAppsList { } } // Stop at the number of predicted apps - if (mPredictedApps.size() == mNumPredictedAppsPerRow) { + if (mPredictedApps.size() + suggestedAppsCount == mNumPredictedAppsPerRow) { break; } } + if (mSuggestedApp != null) { + // adding suggested app as the last predicted app + mPredictedApps.add(mSuggestedApp); + } + if (!mPredictedApps.isEmpty()) { // Add a section for the predictions lastFastScrollerSectionInfo = new FastScrollSectionInfo(""); diff --git a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java index 0700a1023f..6c68044978 100644 --- a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java +++ b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java @@ -17,5 +17,5 @@ package com.android.launcher3.discovery; public enum AppDiscoveryUpdateState { - START, UPDATE, END + START, UPDATE, END, SUGGESTED }