Code cleanup: improve ChooseActivityDialog using ViewHolder pattern

This commit is contained in:
Jimmy Shih
2014-01-17 13:39:22 -08:00
parent 28801a1332
commit b5d40baeba
@@ -61,6 +61,12 @@ public class ChooseActivityDialogFragment extends AbstractMyTracksDialogFragment
public void onChooseActivityDone(String packageName, String className); 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"; public static final String CHOOSE_ACTIVITY_DIALOG_TAG = "chooseActivityDialog";
private ChooseActivityCaller caller; private ChooseActivityCaller caller;
@@ -88,24 +94,29 @@ public class ChooseActivityDialogFragment extends AbstractMyTracksDialogFragment
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
View view; View view;
ViewHolder viewHolder;
if (convertView == null) { if (convertView == null) {
view = getActivity().getLayoutInflater() view = getActivity().getLayoutInflater()
.inflate(R.layout.choose_activity_list_item, parent, false); .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 { } else {
view = convertView; view = convertView;
viewHolder = (ViewHolder) view.getTag();
} }
DisplayInfo displayInfo = getItem(position); 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); viewHolder.text1.setText(displayInfo.primaryLabel);
ImageView icon = (ImageView) view.findViewById(R.id.choose_activity_list_item_icon);
text1.setText(displayInfo.primaryLabel); boolean hasSecondaryLabel = displayInfo.secondaryLabel != null;
if (displayInfo.secondaryLabel != null) { viewHolder.text2.setVisibility(hasSecondaryLabel ? View.VISIBLE : View.GONE);
text2.setVisibility(View.VISIBLE); if (hasSecondaryLabel) {
text2.setText(displayInfo.secondaryLabel); viewHolder.text2.setText(displayInfo.secondaryLabel);
} else {
text2.setVisibility(View.GONE);
} }
icon.setImageDrawable(displayInfo.icon); viewHolder.icon.setImageDrawable(displayInfo.icon);
return view; return view;
} }
}; };