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



在我的应用程序中,我想要combine两个不同的列表,为此我使用kotlin flowcombine&zip运营商!
我写下面的代码,但在活动中使用时,我不知道如何获得列表!

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)!!
}
}

活动代码:

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

}
}

我想得到每个列表和设置为adapter

!当写入时它collect中选择索引,例如:it[0]


但是我想得到每个列表并设置为recycler adapter

。我该怎么做?

如果我正确理解了你的问题,你想转换" pair列表"到"一对列表"。您可以使用unzip函数。

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

这里,movies将是来自moviesFlowgenres的电影列表为genresFlow中的类型列表。

但是如果您只希望这两个列表分开,您可以直接在Activity中收集这两个流,而不是先压缩然后解压缩。

相关内容

  • 没有找到相关文章

最新更新