0

我正在 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)
        }
}

我试过的:

这是我的项目结构:

文字](https://imgur.com/eQ14M7H)[![在此处输入图片描述] 1

任何帮助表示赞赏。

4

0 回答 0