Всем привет. Как можно красиво организовать экран со списком, в котором множество разных айтемов?
Сейчас имею AdapterDelegates + DiffUtils и эта сязка работает хорошо. Но сложность возникла в месте где формируется список. У меня это ViewModel которая имеет множество делегатов. Каждый делегат вью-модели отвечает за один AdapterDelegate (он же ViewType), отправляет запросы на бэк, подписывается на данные из БД, передает в общий список элементов модельки с состояниями (загрузка/ошибка/контент).
Со временем здесь образовался хаус и начались проблемы: двойные отправки одного и того же запроса на бэк, частые обновления списка, нарушения в логике отрисовки списка, подлагивание из-за перерисовки списка, куча обращений в БД, проблемы с поддержкой и расширением функционала.
Сейчас есть возможность все переделать и устранить актуальные проблемы, но прежде чем это сделать, хотелось бы услышать кто как решал подобные кейсы или как можно изменить то, что уже имеется?