Как сделать сложный ListView в android?
Вам нужен специальный адаптер для листа. Можно поступить как труЪ-программист - написать адаптер самому. Это совсем несложно - нужно наследоваться от BaseAdapter и реализовать, помимо стандартных, два метода, связанных с типами элементов листа: getItemViewType и getViewTypeCount. Типов элементов у вас может быть сколько угодно. Соответственно, в основном методе getView вы можете выбирать тот лэйаут, который соответствует типу запрашиваемого элемента.
Есть вот такая библиотека
https://github.com/commonsguy/cwac-merge