title: How to put different layouts for child items in ExpandableListView?
body: <p>I develop an Android App, so I'm trying to use the <code>ExpandableListView</code> to use two different layouts for each child. But I have a problem and can't seem to fix it. I thought the problem was that I didn't get the right child. Both children display the two layouts at the same time.</p>
  
  <p>This my <strong>class Adapter</strong> !</p>
  
  <pre><code>public class ExpandListAdapter extends BaseExpandableListAdapter {
  
  private Context context;
  private ArrayList&lt;ExpandListGroup&gt; groups;
  public ExpandListAdapter(Context context, ArrayList&lt;ExpandListGroup&gt; groups) {
  this.context = context;
  this.groups = groups;
  }
  
  public void addItem(ExpandListChild item, ExpandListGroup group) {
  if (!groups.contains(group)) {
  groups.add(group);
  }
  int index = groups.indexOf(group);
  ArrayList&lt;ExpandListChild&gt; ch = groups.get(index).getItems();
  ch.add(item);
  groups.get(index).setItems(ch);
  }
  public Object getChild(int groupPosition, int childPosition) {
  //TODO Auto-generated method stub
  ArrayList&lt;ExpandListChild&gt; chList = groups.get(groupPosition).getItems();
  return chList.get(childPosition);
  }
  @Override
  public int getChildTypeCount() {
  return 2;
  }
  
  public long getChildId(int groupPosition, int childPosition) {
  //TODO Auto-generated method stub
  //return childPosition;
  return (long)( groupPosition*50+childPosition );
  }
  @Override
  public int getChildType(int groupPosition, int childPosition)
  {
  int result = 0;
  if (childPosition == getChildrenCount(groupPosition)-1)
  result = 1;
  
  return result;
  }
  
  
  public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view,
  ViewGroup parent) {
  TextView textView = null;
  ExpandListChild child = (ExpandListChild) getChild(groupPosition, childPosition);
  /*  if (view == null) {
  if(childPosition == 0){
  LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
  view = infalInflater.inflate(R.layout.expandlist_child_item, null);}
  else if (childPosition == 1){
  LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
  view = infalInflater.inflate(R.layout.child2, null);
  
  }
  }*/
  
  if (view == null) {
  int itemType = getChildType(groupPosition,childPosition);
  LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
  //view = infalInflater.inflate(R.layout.expandlist_child_item, null);
  
  if(itemType == 0)
  {
  
  
  view = infalInflater.inflate(R.layout.expandlist_child_item, null);
  textView = (TextView) view.findViewById(R.id.tvChild);
  textView.setText("0");
  //textView.setTag(child.getTag());
  }
  else
  { view = infalInflater.inflate(R.layout.child2, null);
  textView  = (TextView) view.findViewById(R.id.tvChild1);
  textView.setText("1");
  textView.setTag(child.getTag());}
  /*
  switch (itemType) {
  case 0:
  {    view = infalInflater.inflate(R.layout.expandlist_child_item, null);
  textView = (TextView) view.findViewById(R.id.tvChild);
  textView.setText("0");
  //textView.setTag(child.getTag());
  break;}
  case 1:
  {   view = infalInflater.inflate(R.layout.child2, null);
  textView  = (TextView) view.findViewById(R.id.tvChild1);
  textView.setText("1");
  textView.setTag(child.getTag());
  break;}
  }
  */
  
  //textView.setPadding(30,20,30,20);
  
  
  }
  
  //TODO Auto-generated method stub
  return view;
  }
  
  public int getChildrenCount(int groupPosition) {
  //TODO Auto-generated method stub
  ArrayList&lt;ExpandListChild&gt; chList = groups.get(groupPosition).getItems();
  
  return chList.size();
  
  }
  
  public Object getGroup(int groupPosition) {
  //TODO Auto-generated method stub
  return groups.get(groupPosition);
  }
  
  public int getGroupCount() {
  //TODO Auto-generated method stub
  return groups.size();
  }
  
  public long getGroupId(int groupPosition) {
  //TODO Auto-generated method stub
  return groupPosition;
  }
  
  public View getGroupView(int groupPosition, boolean isLastChild, View view,
  ViewGroup parent) {
  ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition);
  if (view == null) {
  LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
  view = inf.inflate(R.layout.expandlist_group_item, null);
  }
  TextView tv = (TextView) view.findViewById(R.id.tvGroup);
  tv.setText(group.getName());
  //TODO Auto-generated method stub
  return view;
  }
  
  public boolean hasStableIds() {
  //TODO Auto-generated method stub
  return true;
  }
  
  public boolean isChildSelectable(int arg0, int arg1) {
  //TODO Auto-generated method stub
  return true;
  }
  </code></pre>
  
  <p>The <strong>child2.xml</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" &gt;
  
  
  
  
        &lt;TextView
          android:id="@+id/tvChild1"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textColor="@color/Black"
          android:textSize="17sp" &gt;
    &lt;/TextView&gt;
  
  
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/b1" /&gt;
  
      &lt;CheckBox
          android:id="@+id/checkBox1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/checkboxh" /&gt;
  
      &lt;RadioButton
          android:id="@+id/radioButton1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="RadioButton" /&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p><strong>expandablelist_child_item.xml</strong></p>
  
  <pre><code>    &lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="55dip"
      android:background="@color/ExpandChildBackground"
      android:orientation="vertical" &gt;
  
  
      &lt;TextView
          android:id="@+id/tvChild"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textColor="@color/Black"
          android:textSize="17sp" &gt;
     &lt;/TextView&gt;
      &lt;Spinner
          android:id="@+id/spinner1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" /&gt;
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/b1" /&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Below you can see the run of the first and second child.</p>
  
  <p><img src="https://i.stack.imgur.com/wL5ti.png" alt=""></p>
  
  <p><img src="https://i.stack.imgur.com/NrgoQ.png" alt=""></p>