diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java index 05169023000f6..5efd46c4c64a6 100644 --- a/core/java/com/android/internal/app/ChooserListAdapter.java +++ b/core/java/com/android/internal/app/ChooserListAdapter.java @@ -838,6 +838,12 @@ public class ChooserListAdapter extends ResolverListAdapter { return mServiceTargets.get(value).getChooserTarget(); } + protected boolean alwaysShowSubLabel() { + // Always show a subLabel for visual consistency across list items. Show an empty + // subLabel if the subLabel is the same as the label + return true; + } + /** * Rather than fully sorting the input list, this sorting task will put the top k elements * in the head of input list and fill the tail with other elements in undetermined order. diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java index fc8cafdc526c9..04a186c3207e3 100644 --- a/core/java/com/android/internal/app/ResolverListAdapter.java +++ b/core/java/com/android/internal/app/ResolverListAdapter.java @@ -540,7 +540,7 @@ public class ResolverListAdapter extends BaseAdapter { && !((DisplayResolveInfo) info).hasDisplayLabel()) { getLoadLabelTask((DisplayResolveInfo) info, holder).execute(); } else { - holder.bindLabel(info.getDisplayLabel(), info.getExtendedInfo()); + holder.bindLabel(info.getDisplayLabel(), info.getExtendedInfo(), alwaysShowSubLabel()); if (info instanceof SelectableTargetInfo) { // direct share targets should append the application name for a better readout DisplayResolveInfo rInfo = ((SelectableTargetInfo) info).getDisplayResolveInfo(); @@ -642,6 +642,10 @@ public class ResolverListAdapter extends BaseAdapter { mIsTabLoaded = true; } + protected boolean alwaysShowSubLabel() { + return false; + } + /** * Necessary methods to communicate between {@link ResolverListAdapter} * and {@link ResolverActivity}. @@ -684,18 +688,16 @@ public class ResolverListAdapter extends BaseAdapter { icon = (ImageView) view.findViewById(R.id.icon); } - public void bindLabel(CharSequence label, CharSequence subLabel) { + public void bindLabel(CharSequence label, CharSequence subLabel, boolean showSubLabel) { if (!TextUtils.equals(text.getText(), label)) { text.setText(label); } - // Always show a subLabel for visual consistency across list items. Show an empty - // subLabel if the subLabel is the same as the label if (TextUtils.equals(label, subLabel)) { - subLabel = null; + subLabel = ""; } - if (!TextUtils.equals(text2.getText(), subLabel)) { + if (showSubLabel || !TextUtils.equals(text2.getText(), subLabel)) { text2.setVisibility(View.VISIBLE); text2.setText(subLabel); } @@ -754,7 +756,7 @@ public class ResolverListAdapter extends BaseAdapter { protected void onPostExecute(CharSequence[] result) { mDisplayResolveInfo.setDisplayLabel(result[0]); mDisplayResolveInfo.setExtendedInfo(result[1]); - mHolder.bindLabel(result[0], result[1]); + mHolder.bindLabel(result[0], result[1], alwaysShowSubLabel()); } }