I want to make an expandable listview in my project.
ExpandableListViewAdapter.Java
public class ExpandableListAdapter extends BaseExpandableListAdapter {
    private Context _context;
    private List<itemGroupAddon> _listDataHeader;
    private HashMap<List<itemGroupAddon>, List<ItemAddon>> _listDataChild;
    public ExpandableListAdapter(Context context, List<itemGroupAddon> listDataHeader,
                                 HashMap<List<itemGroupAddon>, List<ItemAddon>> listChildData) {
        this._context = context;
        this._listDataHeader = listDataHeader;
        this._listDataChild = listChildData;
    }
    @Override
    public long getChildId(int groupPosition, int childPosititon) {
        return childPosititon;
    }
    @Override
    public int getChildrenCount(int groupPosition) {
        return this._listDataChild.get(this._listDataHeader.get(groupPosition)).size();
    }
    @Override
    public Object getChild(int groupPosition, int childPosititon) {
        return this._listDataChild.get(this._listDataHeader.get(groupPosition))
                .get(childPosititon).getNama_addon();
    }
    @Override
    public int getGroupCount() {
        return this._listDataHeader.size();
    }
    @Override
    public Object getGroup(int groupPosition) {
        return this._listDataHeader.get(groupPosition).getAddon_group_name();
    }
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }
    @Override
    public boolean hasStableIds() {
        return false;
    }
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        String headerTitle = (String) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_group, null);
        }
        TextView lblListHeader = (TextView) convertView
                .findViewById(R.id.tvModifier);
        lblListHeader.setText(headerTitle);
        return convertView;
    }
    @Override
    public View getChildView(int groupPosition, final int childPosition, boolean isLastChild,
                             View convertView, ViewGroup parent) {
        final String childText = (String) getChild(groupPosition, childPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_item_mod, null);
        }
        TextView txtListChild = (TextView) convertView
                .findViewById(R.id.lblListItem);
        txtListChild.setText(childText);
        return convertView;
    }
    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }
}
This is the procedure that I put in my Activity to call the data. I get the data from my sqlite database.
public void PrepareListData(int itemID,int OutletID)
{
    listHeaderData = new ArrayList<>();
    listData = new ArrayList<>();
    listDataChild = new HashMap<List<itemGroupAddon>, List<ItemAddon>>();
    listHeaderData = db.getAllItemGroup(itemID);
    for(itemGroupAddon items : listHeaderData){
        listData= db.getAddonItemList(items.getItem_addon_group_id(),outletID);
    }
    listDataChild.put(listHeaderData,listData);
}
In my OnCreate I call it like this:
PrepareListData(itemId,outletID);
adapterExpList = new ExpandableListAdapter(getActivity(), listHeaderData, listDataChild);
 lvModifier.setAdapter(adapterExpList);
When I run the program it shows header only but the child data isn't showing. When I click the header to expand childData I get a fatal error:
E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.project.pos.posandroid, PID: 28411
  java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
      at com.project.pos.posandroid.Adapter.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:41)
      at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:563)
      at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:688)
      at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:696)
      at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:656)
      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3066)
      at android.widget.AbsListView.onTouchUp(AbsListView.java:3915)
      at android.widget.AbsListView.onTouchEvent(AbsListView.java:3680)
      at android.view.View.dispatchTouchEvent(View.java:9333)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2548)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2241)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2554)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2255)
      at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
      at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
      at android.app.Dialog.dispatchTouchEvent(Dialog.java:787)
      at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
      at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
      at android.view.View.dispatchPointerEvent(View.java:9553)
      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4248)
      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4101)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3647)
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3700)
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3666)
      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3792)
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3674)
      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3849)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3647)
    at android.view.ViewRootImpl$InputStage
The error shows to my this part of my adapter:
return this._listDataChild.get(this._listDataHeader.get(groupPosition)).size();
How can I fix this?
 
     
     
    