title: ConvertView arg in getChildView() and getGroupView() are mixed in ExpandableAdapter?
body: <p>when getChildView() called, the convertView delivered sometimes is the view i created in getGroupView(), and also when getGroupView() called, the convertView sometimes is the view i created in getChildView, why would this happened?</p>
  
  <pre><code>&lt;code&gt;
  public class FavoriteAdapter extends BaseExpandableListAdapter {
      private Context ctx;
      private int[] mGroups;
      private List&lt;Object&gt;[] mChildren;
  
      public FavoriteAdapter(Context ctx) {
          this.ctx = ctx;
          mGroups = new int[0];
          mChildren = new List[0];
      }
  
      public void addAll(List&lt;Object&gt; list) {
          //mGroups=...
          //mChildren=...
          notifyDataSetChanged();
      }
  
      @Override
      public int getGroupCount() {
          return mGroups.length;
      }
  
      @Override
      public int getChildrenCount(int groupPosition) {
          return mChildren[groupPosition].size();
      }
  
      @Override
      public long getGroupId(int groupPosition) {
          return groupPosition;
      }
  
      @Override
      public long getChildId(int groupPosition, int childPosition) {
          return childPosition;
      }
  
      @Override
      public int getChildTypeCount() {
          return mChildren.length;
      }
  
      @Override
      public int getChildType(int groupPosition, int childPosition) {
          return groupPosition;
      }
  
      @Override
      public Object getGroup(int groupPosition) {
          return mGroups[groupPosition];
      }
  
      @Override
      public Object getChild(int groupPosition, int childPosition) {
          return mChildren[groupPosition].get(childPosition);
      }
  
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
          ViewHolder h;
          if (null == convertView) {
              h = new ViewHolder();
              convertView = LayoutInflater.from(ctx).inflate(R.layout.group_item, null);
              h.tv1 = (TextView) convertView.findViewById(R.id.group_tv);
              convertView.setTag(h);
          } else {
              h = (ViewHolder) convertView.getTag();
          }
          switch ((Integer) getGroup(groupPosition)) {
              case Type.TYPE_1:
                  h.tv1.setText("Type1");
                  break;
  
              case Type.TYPE_2:
                  h.tv1.setText("Type2");
                  break;
  
              case Type.TYPE_3:
                  h.tv1.setText("Type3");
                  break;
  
              case Type.TYPE_4:
                  h.tv1.setText("Type4");
                  break;
  
              case Type.TYPE_5:
                  h.tv1.setText("Type5");
                  break;
  
              default:
                  throw new RuntimeException("Group type does not match!!!");
          }
  
          return convertView;
      }
  
      @Override
      public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
          Object p = getChild(groupPosition, childPosition);
  
          ViewHolder h;
          if (null == convertView) {
              h = new ViewHolder();
              switch (p.type) {
                  case Type.TYPE_1:
                      convertView = LayoutInflater.from(ctx).inflate(R.layout.item_1, null);
                      h.img = (ImageView) convertView.findViewById(R.id.logo);
                      h.tv1 = (TextView) convertView.findViewById(R.id.title);
                      h.tv2 = (TextView) convertView.findViewById(R.id.intro);
                      break;
  
                  case Type.TYPE_2:
                      convertView = LayoutInflater.from(ctx).inflate(R.layout.item_2, null);
                      h.img = (ImageView) convertView.findViewById(R.id.logo);
                      h.tv1 = (TextView) convertView.findViewById(R.id.title);
                      h.tv2 = (TextView) convertView.findViewById(R.id.intro);
                      break;
  
                  case Type.TYPE_3:
                      convertView = LayoutInflater.from(ctx).inflate(R.layout.item_3, null);
                      h.tv1 = (TextView) convertView.findViewById(R.id.title);
                      h.tv2 = (TextView) convertView.findViewById(R.id.time);
                      break;
  
                  case Type.TYPE_4:
                      convertView = LayoutInflater.from(ctx).inflate(R.layout.item_4, null);
                      h.img = (ImageView) convertView.findViewById(R.id.logo);
                      h.tv1 = (TextView) convertView.findViewById(R.id.title);
                      h.tv2 = (TextView) convertView.findViewById(R.id.addr);
                      h.tv3 = (TextView) convertView.findViewById(R.id.area);
                      break;
  
                  case Type.TYPE_5:
                      convertView = LayoutInflater.from(ctx).inflate(R.layout.item_5, null);
                      h.img = (ImageView) convertView.findViewById(R.id.logo);
                      h.tv1 = (TextView) convertView.findViewById(R.id.title);
                      h.tv2 = (TextView) convertView.findViewById(R.id.addr);
                      h.tv3 = (TextView) convertView.findViewById(R.id.tel);
                      break;
  
                  default:
                      throw new RuntimeException("Child type does not match!!!");
              }
              convertView.setTag(h);
          } else {
              h = (ViewHolder) convertView.getTag();
          }
  
          switch (p.type) {
              case Type.TYPE_1:
                  if (null != p.thumb &amp;&amp; p.thumb.length() != 0) {
                      displayImage(p.thumb, h.img);
                  } else {
                      h.img.setVisibility(View.GONE);
                  }
                  if (null != p.title &amp;&amp; p.title.length() != 0) {
                      h.tv1.setText(p.title);
                  }
                  if (null != p.detail &amp;&amp; p.detail.length() != 0) {
                      h.tv2.setText(p.detail);
                  }
                  break;
  
              case Type.TYPE_2:
                  if (null != p.thumb &amp;&amp; p.thumb.length() != 0) {
                      displayImage(p.thumb, h.img);
                  } else {
                      h.img.setVisibility(View.GONE);
                  }
                  if (null != p.title &amp;&amp; p.title.length() != 0) {
                      h.tv1.setText(p.title);
                  }
                  if (null != p.intro) {
                      h.tv2.setText(p.intro);
                  }
                  break;
  
              case Type.TYPE_3:
                  if (null != p.title &amp;&amp; p.title.length() != 0) {
                      h.tv1.setText(p.title);
                  }
                  break;
  
              case Type.TYPE_4:
                  if (null != p.thumb &amp;&amp; p.thumb.length() != 0) {
                      displayImage(p.thumb, h.img);
                  } else {
                      h.img.setVisibility(View.GONE);
                  }
                  if (null != p.title &amp;&amp; p.title.length() != 0) {
                      h.tv1.setText(p.title);
                  }
                  break;
  
              case Type.TYPE_5:
                  if (null != p.thumb &amp;&amp; p.thumb.length() != 0) {
                      displayImage(p.thumb, h.img);
                  } else {
                      h.img.setVisibility(View.GONE);
                  }
                  if (null != p.title &amp;&amp; p.title.length() != 0) {
                      h.tv1.setText(p.title);
                  }
                  break;
  
              default:
                  throw new RuntimeException("Child type does not match!!!");
          }
  
          return convertView;
      }
  
      @Override
      public boolean hasStableIds() {
          return false;
      }
  
      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
          return true;
      }
  
      private void displayImage(String uri, ImageView img) {
          //display logo
      }
  
      private static class ViewHolder {
          ImageView img;
          TextView tv1;
          TextView tv2;
          TextView tv3;
      }
  }
  
  &lt;/code&gt;
  </code></pre>