title: BaseExpandableListAdapter RuntimeError NullPointerException
body: <p>I'm trying to view data from a database in an ExpandableListView (I'm first trying to get it working with hard coded Strings).</p>
  
  <p>I've used the following example: <a href="http://en.wikicode.org/index.php/Custom_ExpandableListView#Results" rel="nofollow">CodeWiki ExpandableListView</a></p>
  
  <p>But I get a Runtime error when I click on a group to get the childView.</p>
  
  <p>Categories1.java</p>
  
  <pre><code>public class CategoriesActivity1 extends Activity
  </code></pre>
  
  <p>{</p>
  
  <pre><code>ExpandableListView eListView;
  ExpandableListAdapter eListAdapter;
  
  ArrayList&lt;String&gt; groups;
  ArrayList&lt;ArrayList&lt;ArrayList&lt;String&gt;&gt;&gt; children;
  
   @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.categories);
  
          eListView = (ExpandableListView)findViewById(R.id.expandableListView1);
  
          loadData();
  
          MyExpandableListAdapter adapter = new MyExpandableListAdapter(this, groups, children);
  
          eListView.setAdapter(adapter);
  
  
   }
  
  
  
   private void loadData(){
  
          groups= new ArrayList&lt;String&gt;();
          children= new ArrayList&lt;ArrayList&lt;ArrayList&lt;String&gt;&gt;&gt;();
  
          groups.add("Group 1");
          groups.add("Group 2");
          groups.add("Group 3");
  
          children.add(new ArrayList&lt;ArrayList&lt;String&gt;&gt;());
          children.get(0).add(new ArrayList&lt;String&gt;());
          children.get(0).get(0).add("Child 1 group 1");
          children.get(0).add(new ArrayList&lt;String&gt;());
          children.get(0).get(1).add("Child 2 group 1");
          children.get(0).add(new ArrayList&lt;String&gt;());
          children.get(0).get(2).add("Child 3 group 1");
  
          children.add(new ArrayList&lt;ArrayList&lt;String&gt;&gt;());
          children.get(1).add(new ArrayList&lt;String&gt;());
          children.get(1).get(0).add("Child 1 group 2");
          children.get(1).add(new ArrayList&lt;String&gt;());
          children.get(1).get(1).add("Child 2 group 2");
          children.get(1).add(new ArrayList&lt;String&gt;());
          children.get(1).get(2).add("Child 3 group 2");
  
          children.add(new ArrayList&lt;ArrayList&lt;String&gt;&gt;());
          children.get(2).add(new ArrayList&lt;String&gt;());
          children.get(2).get(0).add("Child 1 group 3");
          children.get(2).add(new ArrayList&lt;String&gt;());
          children.get(2).get(1).add("Child 2 group 3");
          children.get(2).add(new ArrayList&lt;String&gt;());
          children.get(2).get(2).add("Child 3 group 3");
      }
  </code></pre>
  
  <p>}</p>
  
  <p>MyExpandableListAdapter.java</p>
  
  <pre><code>public class MyExpandableListAdapter extends BaseExpandableListAdapter
  </code></pre>
  
  <p>{</p>
  
  <pre><code>private ArrayList&lt;String&gt; groups;
      private ArrayList&lt;ArrayList&lt;ArrayList&lt;String&gt;&gt;&gt; children;
      private Context context;
  
  public MyExpandableListAdapter(Context context, ArrayList&lt;String&gt; groups, ArrayList&lt;ArrayList&lt;ArrayList&lt;String&gt;&gt;&gt; children)
  {
      this.context = context;
      this.groups = groups;
      this.children = children;
  }
  
  @Override
  public boolean areAllItemsEnabled()
  {
      return true;
  }
  
  @Override
  public ArrayList&lt;String&gt; getChild(int groupPosition, int childPosition)
  {
      return children.get(groupPosition).get(childPosition);
  }
  
  @Override
  public long getChildId(int groupPosition, int childPosition)
  {
      return childPosition;
  }
  
  @Override
  public View getChildView(int groupPosition, int childPosition,
          boolean isLastChild, View convertView, ViewGroup parent)
  {
      String child = (String) ((ArrayList&lt;String&gt;)getChild(groupPosition, childPosition)).get(0);
  
      if(convertView == null)
      {
          LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          convertView = layoutInflater.inflate(R.layout.categories_group, null);
      }
  
      TextView childTxt = (TextView)convertView.findViewById(R.id.TextViewChild01);
  
      childTxt.setText(child);
  
      return convertView;
  }
  
  @Override
  public int getChildrenCount(int groupPosition)
  {
      return children.get(groupPosition).size();
  }
  
  @Override
  public Object getGroup(int groupPosition)
  {
      return groups.get(groupPosition);
  }
  
  @Override
  public int getGroupCount()
  {
      return groups.size();
  }
  
  @Override
  public long getGroupId(int groupPosition)
  {
      return groupPosition;
  }
  
  @Override
  public View getGroupView(int groupPosition, boolean isExpanded,
          View convertView, ViewGroup parent)
  {
      String group = (String) getGroup(groupPosition);
  
      if(convertView == null)
      {
          LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          convertView = layoutInflater.inflate(R.layout.categories_group, null);
      }
  
      TextView groupTxt = (TextView) convertView.findViewById(R.id.TextViewGroup);
  
      groupTxt.setText(group);
  
  
      return convertView;
  }
  
  @Override
  public boolean hasStableIds()
  {
      return true;
  }
  
  @Override
  public boolean isChildSelectable(int groupPosition, int childPosition)
  {
      return true;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>categories_group.xml</p>
  
  <pre><code>     &lt;?xml version="1.0" encoding="utf-8"?&gt;
  
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/categoriesLLayout2"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" &gt;
  
      &lt;TextView
          android:id="@+id/TextViewGroup" 
          android:layout_width="wrap_content"
          android:layout_height="50dp"
          android:layout_marginLeft="50dp"
          android:gravity="center_vertical"
      &gt;
      &lt;/TextView&gt;
      &lt;TextView
          android:id="@+id/TextViewChild01" 
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="30dp"
      &gt;
      &lt;/TextView&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Logcat:</p>
  
  <blockquote>
    <p>03-17 15:16:13.468: E/AndroidRuntime(370): FATAL EXCEPTION: main
    03-17 15:16:13.468: E/AndroidRuntime(370): java.lang.NullPointerException
    03-17 15:16:13.468: E/AndroidRuntime(370):  at nl.test.listing.activity.MyExpandableListAdapter.getChildView(MyExpandableListAdapter.java:64)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.AbsListView.obtainView(AbsListView.java:1430)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.ListView.onMeasure(ListView.java:1127)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.View.measure(View.java:8313)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.View.measure(View.java:8313)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.View.measure(View.java:8313)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.View.measure(View.java:8313)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.View.measure(View.java:8313)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.os.Handler.dispatchMessage(Handler.java:99)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.os.Looper.loop(Looper.java:123)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at java.lang.reflect.Method.invokeNative(Native Method)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at java.lang.reflect.Method.invoke(Method.java:507)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    03-17 15:16:13.468: E/AndroidRuntime(370):  at dalvik.system.NativeStart.main(Native Method)</p>
  </blockquote>
  
  <p>I don't know why I get this error, looking at the example I only changed the xml values from px to dp.</p>