Оптимизация addView/removeAllChildren для кастомного компонента в Android?
Дождитесь таки совета опытных разработчиков, а пока… а вы не пробовали предварительно создать и разместить нужные вьюхи на элементе списка и при возникновении определенных событий (тот же клик на кнопку) только управлять их видимостью (View.VISIBLE, View.INVISIBLE, View.GONE) и изменением состояния (может там какое-то заполнение или еще что-то)? Или это не подходит в вашем случае? По-моему, вот так создавать-удалять в рантайме не очень хорошо.
Между тем я кажется нашел решение.

Надо на каждое состояние создать по отдельной View'хе и уже в самом Adapter'е в зависимости от данных инстанцировать нужную View, пропихивать обработчик изменения состояния туда. При изменении состояния обновлять элемент данных и дергать обновление ListView.