From b5d40baebaa6bd9280700a80e42ad4d2480a294f Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Fri, 17 Jan 2014 13:39:22 -0800 Subject: [PATCH] Code cleanup: improve ChooseActivityDialog using ViewHolder pattern --- .../ChooseActivityDialogFragment.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java index 43b67245d..c06987f1c 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChooseActivityDialogFragment.java @@ -61,6 +61,12 @@ public class ChooseActivityDialogFragment extends AbstractMyTracksDialogFragment public void onChooseActivityDone(String packageName, String className); } + private static class ViewHolder { + TextView text1; + TextView text2; + ImageView icon; + } + public static final String CHOOSE_ACTIVITY_DIALOG_TAG = "chooseActivityDialog"; private ChooseActivityCaller caller; @@ -88,24 +94,29 @@ public class ChooseActivityDialogFragment extends AbstractMyTracksDialogFragment @Override public View getView(int position, View convertView, ViewGroup parent) { View view; + ViewHolder viewHolder; if (convertView == null) { view = getActivity().getLayoutInflater() .inflate(R.layout.choose_activity_list_item, parent, false); + viewHolder = new ViewHolder(); + viewHolder.text1 = (TextView) view.findViewById(R.id.choose_activity_list_item_text1); + viewHolder.text2 = (TextView) view.findViewById(R.id.choose_activity_list_item_text2); + viewHolder.icon = (ImageView) view.findViewById(R.id.choose_activity_list_item_icon); + view.setTag(viewHolder); } else { view = convertView; + viewHolder = (ViewHolder) view.getTag(); } DisplayInfo displayInfo = getItem(position); - TextView text1 = (TextView) view.findViewById(R.id.choose_activity_list_item_text1); - TextView text2 = (TextView) view.findViewById(R.id.choose_activity_list_item_text2); - ImageView icon = (ImageView) view.findViewById(R.id.choose_activity_list_item_icon); - text1.setText(displayInfo.primaryLabel); - if (displayInfo.secondaryLabel != null) { - text2.setVisibility(View.VISIBLE); - text2.setText(displayInfo.secondaryLabel); - } else { - text2.setVisibility(View.GONE); + + viewHolder.text1.setText(displayInfo.primaryLabel); + + boolean hasSecondaryLabel = displayInfo.secondaryLabel != null; + viewHolder.text2.setVisibility(hasSecondaryLabel ? View.VISIBLE : View.GONE); + if (hasSecondaryLabel) { + viewHolder.text2.setText(displayInfo.secondaryLabel); } - icon.setImageDrawable(displayInfo.icon); + viewHolder.icon.setImageDrawable(displayInfo.icon); return view; } };