diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index ecf6497b1ea..ca68a740628 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -15,7 +15,6 @@ */ package com.android.settings.dashboard; -import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; @@ -110,21 +109,6 @@ public class DashboardAdapter extends RecyclerView.Adapter categories, List suggestions) { mSuggestions = suggestions; diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java index 778d620e08d..4232852661f 100644 --- a/src/com/android/settings/dashboard/SummaryLoader.java +++ b/src/com/android/settings/dashboard/SummaryLoader.java @@ -28,8 +28,10 @@ import android.os.Process; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; + import com.android.settings.SettingsActivity; import com.android.settingslib.drawer.DashboardCategory; +import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.Tile; import java.lang.reflect.Field; @@ -87,9 +89,24 @@ public class SummaryLoader { public void run() { // Since tiles are not always cached (like on locale change for instance), // we need to always get the latest one. - Tile tile = mAdapter.getTile(component); - if (tile == null) return; - if (DEBUG) Log.d(TAG, "setSummary " + tile.title + " - " + summary); + if (!(mActivity instanceof SettingsDrawerActivity)) { + if (DEBUG) { + Log.d(TAG, "Can't get category list."); + } + return; + } + final List categories = + ((SettingsDrawerActivity) mActivity).getDashboardCategories(); + final Tile tile = getTileFromCategory(categories, component); + if (tile == null) { + if (DEBUG) { + Log.d(TAG, "Can't find tile for " + component); + } + return; + } + if (DEBUG) { + Log.d(TAG, "setSummary " + tile.title + " - " + summary); + } tile.summary = summary; mAdapter.notifyChanged(tile); } @@ -187,6 +204,27 @@ public class SummaryLoader { } } + private Tile getTileFromCategory(List categories, ComponentName component) { + if (categories == null) { + if (DEBUG) { + Log.d(TAG, "Category is null, can't find tile"); + } + return null; + } + final int categorySize = categories.size(); + for (int i = 0; i < categorySize; i++) { + final DashboardCategory category = categories.get(i); + final int tileCount = category.tiles.size(); + for (int j = 0; j < tileCount; j++) { + final Tile tile = category.tiles.get(j); + if (component.equals(tile.intent.getComponent())) { + return tile; + } + } + } + return null; + } + public interface SummaryProvider { void setListening(boolean listening); }