title: getChildView not being called
body: <p>I am making a menu which includes a custom ExpandableListView adapter. Despite trying to match my code as close to the API examples and any other examples I've seen online (including multiple closely related SO questions), I still can't get it working.</p>
  
  <p>I know the adapter is being used because the group view is being shown (which is made from an xml). Clicking on the group item also calls "getGroupView", but the code never runs "getChildView", "getChild", or "getChildId".</p>
  
  <p>I've even went through the Android-15 source code to find out what I might have done wrong, but nothing odd has came up.</p>
  
  <p>= Base Activity</p>
  
  <pre><code>public class SettingsM extends FragmentActivity
  {
      static Context context;
      ViewPager mViewPager;
      CollectionPagerAdapter mDemoCollectionPagerAdapter;
      //ColorPicker picker;
  
      SharedPreferences preferences;
  
      public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
              WindowManager.LayoutParams.FLAG_FULLSCREEN);
  
          context = this;
          // Set up action bar.
          final ActionBar actionBar = getActionBar();
  
          actionBar.setDisplayHomeAsUpEnabled(false);
          actionBar.setDisplayUseLogoEnabled(false);
          actionBar.setTitle("Particle emitter settings");
  
          // get the preferences for this screen
          preferences = this.getSharedPreferences("base_world", 0);
  
          // tab holder
          setContentView(R.layout.tabmenu_holder);
          mViewPager = (ViewPager) findViewById(R.id.pager);
  
          mDemoCollectionPagerAdapter = new CollectionPagerAdapter(getSupportFragmentManager());
          mViewPager.setAdapter(mDemoCollectionPagerAdapter);
      }
  
      public class CollectionPagerAdapter extends FragmentStatePagerAdapter
      {
          public CollectionPagerAdapter(FragmentManager fm) 
          {
              super(fm);
          }
  
          @Override
          public Fragment getItem(int i)
          {
              Fragment fragment = new TabFragment();
              Bundle args = new Bundle();
              if(preferences != null)
                  {
                  if(i == 0)
                  {// world
                      args.putBoolean("world", true);
                  } else
                  {// emitter
                      args.putBoolean("world", false);
                      args.putInt("emitter", i-1);
                  }
              }
              fragment.setArguments(args);
              return fragment;
          }
  
          @Override
          public int getCount()
          {
              return 100;
          }
  
          @Override
          public CharSequence getPageTitle(int position) 
          {
              if(position == 0)
              {
                  return "World";
              } else
              {
                  return "Emitter #" + position;
              }
          }
      }
  
      public static class TabFragment extends Fragment
      {        
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
          {
              Bundle args = getArguments();
              View rootView = new TextView(context);// use a textview as the default
  
              if(args.getBoolean("world"))
              {
                  rootView = inflater.inflate(R.layout.m_backdrop, container, false);
  
                  // add face drop-down
                  ExpandableListView face_list = (ExpandableListView) rootView.findViewById(R.id.FaceList);
                  if(face_list != null)
                  {
                      face_list.setAdapter(new ExpandableFaceList(context));
                      face_list.setOnGroupClickListener(new OnGroupClickListener()
                      {
  
                          @Override
                          public boolean onGroupClick(ExpandableListView parent,
                              View v, int groupPosition, long id)
                          {
                              Log.i("FaceList", "Clicked:" + groupPosition);
                              return false;
                          }
                      });
                  }
  
              } else
              {
                  return rootView;
              }
              return rootView;
          }
      }
  }
  </code></pre>
  
  <p>= Expandable List view Adapter</p>
  
  <pre><code>public class ExpandableFaceList extends BaseExpandableListAdapter implements ExpandableListAdapter
  {
      public Context context;
      private LayoutInflater inflator;
      private float mDensity = 1f;
  
      private boolean bShowSw = true;
      private ColorPickerMenuView cp;
      private Switch sw;
  
  
      public ExpandableFaceList(Context context)
      {
          this.context = context;
          this.inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  
          mDensity = context.getResources().getDisplayMetrics().density;
      }
  
      @Override
      public int getGroupCount()
      {
          return 1;
      }
  
      @Override
      public int getChildrenCount(int groupPosition)
      {
          return 6;// because there are 6 faces to a cube
      }
  
      // list views
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded,
              View convertView, ViewGroup parent)
      {
          View v = convertView;
          TextView tv;
  
          if(v == null)
          {
              v = inflator.inflate(R.layout.exlist_head, parent, false);
  
              tv = (TextView) v.findViewById(R.id.exList_Title);
              if(tv != null)
                  tv.setText("Face Colors");
  
              tv = (TextView) v.findViewById(R.id.exList_Summary);
              String s_text = "The color for each face, click to ";
              s_text += ((isExpanded)? "collaspe": "expand");
              if(tv != null)
                  tv.setText(s_text);
          } else
          {
              tv = (TextView) v.findViewById(R.id.exList_Summary);
              String s_text = "The color for each face, click to ";
              s_text += ((isExpanded)? "collaspe": "expand");
              if(tv != null)
                  tv.setText(s_text);
              parent.invalidate();
          }        
  
          return v;
      }
  
      @Override
      public View getChildView(int groupPosition, int childPosition,
              boolean isLastChild, View convertView, ViewGroup parent)
      {
          View v = convertView;
  
          if(v == null)
          {
              if(bShowSw)
              {
                  v = (LinearLayout) inflator.inflate(R.layout.face_info_sw, parent, false);
              } else
              {
                  v = (LinearLayout) inflator.inflate(R.layout.face_info, parent, false);
              }
          }
  
          switch(childPosition)
          {
          case 0:
              v.setTag("Front");
              break;
          case 1:
              v.setTag("Back");
              break;
          case 2:
              v.setTag("Left");
              break;
          case 3:
              v.setTag("Right");
              break;
          case 4:
              v.setTag("Top");
              break;
          case 5:
              v.setTag("Bottom");
              break;
              }
  
          Log.i("ELV", "Pos:" + childPosition);
  
          cp = (ColorPickerMenuView) v.findViewById(R.id.face_color);
          cp.setTitle((String) v.getTag());
  
          cp.setOnClickListener(new OnClickListener() {
              public void onClick(View v) { UpdateData(v); }
          });
  
          if(bShowSw)
          {
              sw = (Switch) v.findViewById(R.id.face_sw);
              sw.setOnClickListener(new OnClickListener() {
                  public void onClick(View v) { UpdateData(v); }
              });
          }
  
          return v;
      }
  
      private void UpdateData(View v) { }
  
      @Override
      public Object getGroup(int groupPosition)
      {
          return groupPosition;
      }
  
      @Override
      public Object getChild(int groupPosition, int childPosition)
      {
          return "Child:" + groupPosition + "." + childPosition;
      }
  
      @Override
      public long getGroupId(int groupPosition)
      {
          return groupPosition;
      }
  
      @Override
      public long getChildId(int groupPosition, int childPosition)
      {
          return childPosition;
      }
  
      @Override
      public boolean hasStableIds()
      {
          return true;
      }
  
      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition)
      {
          return true;
      }
  }
  </code></pre>
  
  <p>= Activity's xml view</p>
  
  <pre><code>&lt;android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent"&gt;
  
      &lt;android.support.v4.view.PagerTitleStrip android:id="@+id/pager_title_strip"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_gravity="top"
          android:background="#33b5e5"
          android:textColor="#fff"
          android:paddingTop="4dp"
          android:paddingBottom="4dp" /&gt;
  
  &lt;/android.support.v4.view.ViewPager&gt;
  </code></pre>
  
  <p>= m_backdrop.xml (menu for the backdrop setting)</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      xmlns:app="http://schemas.android.com/apk/res/com.zyphronics.aquafinger"&gt;
  
        &lt;RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" &gt;
  
              &lt;TextView
              android:id="@+id/Title_GeneralSettings_text"
              style="?android:attr/listSeparatorTextViewStyle"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="5dip"
              android:text="General Settings" /&gt;
  
          &lt;ExpandableListView
              android:id="@+id/FaceList"
              android:layout_width="match_parent"
              android:layout_height="fill_parent"
              android:layout_below="@id/Title_GeneralSettings_text" &gt;
          &lt;/ExpandableListView&gt;
  
          &lt;/RelativeLayout&gt;
  
  &lt;/ScrollView&gt;
  </code></pre>
  
  <p>= face_info.sw.xml (The face_info.xml is the same, but without the switch)</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="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical" &gt;
  
      &lt;Switch
          android:id="@+id/face_sw"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_marginLeft="10dp"
          android:tag="face_sw"
          android:text="Enabled?"
          android:textOff="No"
          android:textOn="Yes" /&gt;
  
      &lt;com.zyphronics.AF.Controls.colorpicker.ColorPickerMenuView
          android:id="@+id/face_color"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:tag="face_color" /&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Even without the "ColorPickerMenuView" part in the face_info_sw.xml, the child view is still not being called. I've also tried having the Relative Layout by itself, instead of in a scroll view, but this prevented further added items from being scrolled to (and also made custom controls have weird sizes).</p>
  
  <p>Any help to solve this would be great. If anyone needs a packaged source of this (eclipse compatible), as in the comments and I'll reply with a link.</p>