如何从 Android 中的 List<Pair> 获取列表

How to get list from List<Pair> in Android

在我的应用程序中,我想要 combine 两个不同的列表,为此我使用了 kotlin flowcombine & zip 运算符!
我写了下面的代码,但是在 activity 中使用时,我不知道如何获取列表!

ViewModel 代码:

class ViewModel (private val repository: Repository) : ViewModel() {

    val moviesFlow = repository.moviesList()
    val genresFlow = repository.genresList()

    fun loadData(): Flow<List<Pair<MoviesResponse.Data, GenresList>>> =
        combine(moviesFlow, genresFlow) { movieList: Response<MoviesResponse>,
                                          genreList: Response<GenresList> ->
            val movies = movieList.body()?.data
            val genres = genreList.body()!!
            return@combine movies?.zip(genres)!!
        }
}

Activity 代码:

    lifecycleScope.launchWhenCreated {
        viewModel.loadData().collect {
            
        }
    }

我想把每个都放在列表中并设置到 adapter!

itcollect时,说我select索引如:it[0]

但我想获取每个列表并设置为 recycler adapter

我该怎么办?

如果我理解你的问题是正确的,你想将“成对列表”转换为“成对列表”。您可以为此使用 unzip 函数。

viewModel.loadData().collect {
    val (movies, genres) = it.unzip()
}

此处,movies 将是来自 moviesFlow 的电影列表,而 genres 将 是 genresFlow.

中的流派列表

但如果您只需要单独的这两个列表,您可以直接在 Activity 中收集这两个流,而不是先压缩再解压缩。