我想得到每个列表和设置为
但是我想得到每个列表并设置为
在我的应用程序中,我想要combine
两个不同的列表,为此我使用kotlin flow
和combine
&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
将是来自moviesFlow
和genres
的电影列表为genresFlow
中的类型列表。
但是如果您只希望这两个列表分开,您可以直接在Activity
中收集这两个流,而不是先压缩然后解压缩。