Ваше описание слишком общее, поэтому я не могу дать вам точный ответ (было бы полезно объяснить, почему они становятся все больше и больше, для чего нужен дополнительный код).
Но, в общем,просто подумайте, что должен делать каждый класс.«Activity» (на мой взгляд) является основным контроллером, он «знает всех» и соединяет другие компоненты вместе (ListView с адаптером списка).Назначение адаптера списка - просто отобразить данные в представления.Если они становятся больше, извлекайте новые (служебные) классы.
Например, предположим, что большая часть кода в ListAdapter форматирует метки времени (например, принимает метку времени как длинное значение и на основе текущего времени создает строку типа «2 часа назад»).Затем имеет смысл создать новый служебный класс TimeFormat (с конструктором, который принимает контекст, он понадобится вам позже для извлечения строковых ресурсов).Затем ListAdapter создаст экземпляр этого класса.
Другим примером будет сохранение данных.В этом случае вы можете создать класс с именем «Модель» или «Документ» (снова с конструктором, принимающим экземпляр «Контекст»).Например, он будет ответственен за загрузку данных с помощью парсин-файлов XML и сохранение данных путем генерации файлов XML.В этом случае этот класс будет создан действием.
Также обратите внимание, что ListAdapter должен действительно делать то, что должен: создавать / настраивать представления на основе данных.Он никогда не должен зависеть от других представлений (в других представлениях он должен работать с любым ListView в любом файле макета).Поэтому, если у вас есть вызов «findViewById», который обращается к представлению вне ListView (или самого ListView), тогда этот код следует переместить в действие.
Кроме того, если есть сомнения, вы можете попытаться найтиприложение с открытым исходным кодом, которое является относительно зрелым и делает что-то похожее (и посмотрите, как это решает проблему).