ArrayList<AttributeFilter> arrayParents = new ArrayList<AttributeFilter>();//Initialize of the parents array that will be provided to the adapter. //Preparation of the first group (AttributeFilter is a custom type I created holding the `SparseArray` with the children and the group title) AttributeFilter categoriesFilter = new AttributeFilter(); categoriesFilter.setTitle(getResources().getString(R.string.categories)); categoriesFilter.setDetails(Tools.getLabelsStringFromSparseArray(categoriesSparseArray, prefs.getCategories())); categoriesSparseArray = Tools.initializeSparseArray(categoriesSparseArray, prefs.getCategories()); categoriesFilter.setArrayChildren(categoriesSparseArray); //Preparation of the second group AttributeFilter emotionsFilter = new AttributeFilter(); emotionsFilter.setTitle(getResources().getString(R.string.emotions)); emotionsFilter.setDetails(Tools.getLabelsStringFromSparseArray(emotionsSparseArray, prefs.getEmotions())); emotionsSparseArray = Tools.initializeSparseArray(emotionsSparseArray, prefs.getEmotions()); emotionsFilter.setArrayChildren(emotionsSparseArray); //Preparation of the third group AttributeFilter ratingsFilter = new AttributeFilter(); ratingsFilter.setTitle(getResources().getString(R.string.ratings)); ratingsFilter.setDetails(Tools.getLabelsStringFromSparseArray(ratingsSparseArray, prefs.getRatings())); ratingsSparseArray = Tools.initializeSparseArray(ratingsSparseArray, prefs.getRatings()); ratingsFilter.setArrayChildren(ratingsSparseArray); //in this array we add the Parent object. We will use the arrayParents at the setAdapter arrayParents.add(categoriesFilter); arrayParents.add(emotionsFilter); arrayParents.add(ratingsFilter); //sets the adapter that provides data to the list. filtersELV.setAdapter(new CustomELVAdapter(this,arrayParents));//the adapter is applied on my `ExpandableListView`.