Взглянем, что умеет адаптер в документации
developer.android.com/reference/android/widget/Bas...
у него есть метод getViewTypeCount(), который возвращает кол-во разных типов item
у вашего адаптера. Переопределяем его и возвращаем из него кол-во типов.
Рядом видим описание метода getItemViewType(int position),
предопределяем и в теле пишем логику, где по позиции вы просчитываете тип item
Теперь нужно написать работу getView() c разными items.
Открываем гугл и вбиваем "android listview 2 layouts"
и смотрим примеры, как инфлейтить несколько лайяутов,
сохранять в таг и восстанавливать для изменения:
www.survivingwithandroid.com/2014/08/android-listv...
android.leocardz.com/multiple-layout-listview