@Override
    public View getView(int position, View convertView, ViewGroup parent) {
      if (convertView == null) {
        convertView =
            LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_unit_item, null);
      }

      final ImageView thumbnailView = (ImageView) convertView.findViewById(R.id.thumbnail);
      TextView rareView = (TextView) convertView.findViewById(R.id.rare);
      TextView nameView = (TextView) convertView.findViewById(R.id.name);
      ElementView elementView = (ElementView) convertView.findViewById(R.id.element);

      final UnitItem item = (UnitItem) getItem(position);
      convertView.setTag(item);

      final View currentView = convertView;

      thumbnailView.setImageBitmap(DataManager.getDefaultThumbnail(getActivity(), null));
      DataManager.loadBitmap(
          getActivity(),
          getTemplateString() + "/thumbnail/" + item.id,
          null,
          new DataManager.BitmapHandler() {
            @Override
            public void onSuccess(Bitmap bitmap) {
              if (bitmap != null && currentView.getTag() == item) {
                thumbnailView.setImageBitmap(bitmap);
              }
            }
          });

      rareView.setText(item.getRareString());
      elementView.setMode(item.element);
      elementView.setElement(item.fire, item.aqua, item.wind, item.light, item.dark);

      TextView textView;
      textView = (TextView) convertView.findViewById(R.id.text_1);
      textView.setText(
          String.format(
              "生命: %d\n攻击: %d\n攻距: %d\n攻数: %d",
              item.getLife(mLevelMode), item.getAtk(mLevelMode), item.aarea, item.anum));

      switch (mTemplate) {
        case R.id.menu_template_unit:
          nameView.setText(item.title + item.name);

          textView = (TextView) convertView.findViewById(R.id.text_2);
          textView.setText(
              String.format(
                  "攻速: %.2f\n韧性: %d\n移速: %d\n多段: %d",
                  item.aspd, item.tenacity, item.mspd, item.hits));

          textView = (TextView) convertView.findViewById(R.id.text_3);
          textView.setText(
              String.format(
                  "成长: %s\n火: %s\n水: %s\n风: %s",
                  item.getTypeString(),
                  UnitItem.getElementString(item.fire),
                  UnitItem.getElementString(item.aqua),
                  UnitItem.getElementString(item.wind)));

          textView = (TextView) convertView.findViewById(R.id.text_4);
          textView.setText(
              String.format(
                  "光: %s\n暗: %s\nDPS: %d\n总DPS: %d",
                  UnitItem.getElementString(item.light),
                  UnitItem.getElementString(item.dark),
                  item.getDPS(mLevelMode),
                  item.getMultDPS(mLevelMode)));

          break;

        case R.id.menu_template_monster:
          nameView.setText(item.name);

          textView = (TextView) convertView.findViewById(R.id.text_2);
          textView.setText(
              String.format(
                  "攻速: %.2f\n韧性: %d\n移速: %d\n皮肤: %s",
                  item.aspd, item.tenacity, item.mspd, item.getSkinString()));

          textView = (TextView) convertView.findViewById(R.id.text_3);
          textView.setText(
              String.format(
                  "技能SP: %d\n技能CD: %d\n技能: %s",
                  item.sklsp, item.sklcd, item.getSkillShortString()));

          textView = (TextView) convertView.findViewById(R.id.text_4);
          textView.setText(
              String.format(
                  "\n\nDPS: %d\n总DPS: %d", item.getDPS(mLevelMode), item.getMultDPS(mLevelMode)));

          break;
      }

      return convertView;
    }