AndreyKu, выкинуть листвью, взять RecyclerView. Сделать интерфейс листенер, который будете пропихивать в адаптер(если не используете Rx. Если используете - из адаптера должен торчать Observable кликов). Где-то (в активити в вашем случае) засечиваете реализацию интерфейса в адаптер. В обработчике изменяете свой список и оповещаете об этом адаптер (notifyItemsRangeUpdated) - поэтому ресайклер, а не листвью. Листвью нельзя нотифицировать об изменении одного элемента, приходится о всём датасете.
Всё. Адаптер занимается своим делом (маппит модель на вьюхи и оповещает во воне о действиях над вьюхами). Логика делается не в адаптере. Всё чётко.
1110001111: Так и есть. Android SDK - это набор костылей. Зоопарком из библиотек ваш подход назвать нельзя. Вот если, например, там одновременно асинктаски, треды, Rx, лоадеры и Agera для многопоточности, то это зоопарк. А так это просто библиотеки, каждая из которых просто делает своё дело.
Эти архитектурные компоненты, которые они выкатили - очень странная хреновина.
1110001111: я бы не стал трогать эти гугловые компоненты ещё с год. Если то, что вы используете, решает свои задачи - продолжайте использовать. MVP и RxJava - хорошо. А с компонентами куча отзывов, что как только что-то чуть сложнее надо сделать, сразу начинаются костыли, общепринятых практик нет.