Создать интерфейс списка маршрутов сгруппированных по типу транспорта

Список маршрутов сделать на базе компонента RecyclerView. Список должен адаптироваться под размер экрана, заполняя всё доступное пространство маршрутами. Необходимо поддерживать горизонтальную и вертикальную ориентацию.
Для каждого маршрута можно установить и снять выбор. В каждом маршруте выводить поле number. Есть возможность выбрать все маршруты одного типа с помощью switch, расположенного рядом с типом маршрутов. Если выбраны все маршруты для типа, то его switch автоматически переходит в состояние on.
Необходимо добавить поддержку светлой и тёмной темы.
Не использовать сторонние компоненты.

Маршрут содержит поля { id, type, number }
Тип маршрута содержит поля { id, type, name }

Макет:https://drive.google.com/file/d/1Q_XIWcnf3mvZrYafr0mIyurkpIT2tlGK/view?usp=sharinghttps://drive.google.com/file/d/1p5-loD8c7vWcmWw-UT-ywWnRTXw0pecP/view?usp=sharing

Читайте на 123ru.net