我正在 Kotlin 中开发一个 Android 应用程序,并尝试使用视图模型、存储库、数据源、接口等来实现 Clean Architecture。
现在我有一个 DTO 类,我正在用 Retrofit 解析:
@Parcelize
data class NewsArticleDto(
val author: String, val title: String, val description: String,
val url: String, val urlToImage: String, val publishedAt: String, val content: String
) : Parcelable
我想让一个名为“GetNews”的交互器从 NewsRepository 获取数据,然后从数据源(改造)获取数据,将其映射到 NewsArticle 实体并将 NewsArticles 列表发送回视图模型。
数据层位于不同的模块(“核心”)内,这是一个 java 库。存储库/交互器不知道 DTO 类,因为它位于“app”模块中。
核心模块不应该知道“app”模块。据我了解,它也不应该具有 SDK 逻辑。
所以这里的问题是交互器不知道 DTO 类,如果我将它完全移动到“核心”模块,Android Studio 无法处理 @parcelize 和 parcelable。
我如何构建我的项目,或者我是否过度设计了一些东西,我应该将 DTO 完全留在“app”模块中吗?如果是这样,我仍然无法使用“GetNews”交互器。
这是 GetNews 交互器:
class GetNews(private val newsRepository: NewsRepository) {
suspend operator fun invoke(keyword: String, apiKey: String): Result<List<NewsArticle>> =
try {
newsRepository.getNews(keyword, apiKey) as Result<List<NewsArticle>>
} catch (throwable: Throwable) {
Result.Failure(throwable)
}
}
我试过的:
将 dto 移动到数据层(由于缺少依赖项而不起作用)
从这里尝试的解决方案:Kotlin 1.3.50 Parcelize unresolved reference error
这是我的项目结构:
] 1
任何帮助表示赞赏。