public View getView(int position, View convertView, ViewGroup parent) { int sectionnum = 0; for (Object section : this.sections.keySet()) { Adapter adapter = sections.get(section); int size = adapter.getCount() + 1; // check if position inside this section if (position == 0) { return(headers.getView(sectionnum, convertView, parent)); } if (position < size) { return(adapter.getView(position - 1, convertView, parent)); } // otherwise jump into next section position -= size; sectionnum++; } return(null); }