android - java/kotlin 模块中的 Jetpack Paging 3

标签 android kotlin android-jetpack clean-architecture android-paging

我正在开发一个具有简洁架构原则的应用。我有一个 domain 模块,它是一个 Java/Kotlin 模块,它没有 android 依赖项和一个 domainImpl 模块,它是一个 >Android 模块并依赖于 localremotedomain 模块。这是 domain 模块中的 Repository 示例:

interface MovieRepository {
    fun getMovie(id: Long): Flow<Movie>
}

下面的代码是它在 domainImpl 模块中的实现:

class MovieRepositoryImpl(
    private val movieApi: MovieApi
) : MovieRepository {

    override fun getMovie(id: Long): Flow<Movie> = flow {
        emit(movieApi.getMovie(id))
    }

}

在这种情况下一切正常。但现在我正在尝试为我的分页添加 Android Paging 3。所以我必须向 MovieRepository 接口(interface)添加一个方法,例如:

fun getMovies(): Flow<PagingData<Movie>>

但在此之前,我必须将 Paging 库添加到我的 domain 模块中,但不幸的是它是一个 Android 库,我找不到它的核心依赖项。那么我能做些什么呢?因此,我是否必须将我的 domain 模块更改为 android 模块?还是有其他解决方法?

最佳答案

Paging 的非android 组件在androidx.paging:paging-common - 根据定义,对演示者 API 的任何依赖都是特定于 Android 的,因此任何与 RecyclerView 相关的代码, LazyColumn等需要特定于 Android。

但是 PagingSource , PagingData , Pager , RemoteMediator均由paging-common 提供,因此您对这些类的实现,包括您的转换链和 Flow<PagingData> 的总体输出可以完全没有安卓系统。

关于android - java/kotlin 模块中的 Jetpack Paging 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66262187/

相关文章:

android - 有意调用录音机并将语音保存在SD卡中

java - 将按钮中的数字插入到 EditText 中选定的位置

android - onKeyEvent 修饰符在 Jetpack Compose 中不起作用

android - Playstore 崩溃转储中缺少行号

android - 使用接近传感器锁定和解锁主屏幕

android - 记事本问题 : getIntent() and set data (by reference? )

android - 开闭原理及扩展功能

android - 新的 Jetpack 分页库使应用程序崩溃 - 新

android - 是否可以链接 WorkManager 周期性工作人员?

android - 使用 <Include> 布局查看绑定(bind)问题