如何从 Android 中的 List<Pair> 获取列表
How to get list from List<Pair> in Android
在我的应用程序中,我想要 combine
两个不同的列表,为此我使用了 kotlin flow
和 combine
& 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
!
写it到collect
时,说我select索引如:it[0]
但我想获取每个列表并设置为 recycler adapter
。
我该怎么办?
如果我理解你的问题是正确的,你想将“成对列表”转换为“成对列表”。您可以为此使用 unzip
函数。
viewModel.loadData().collect {
val (movies, genres) = it.unzip()
}
此处,movies
将是来自 moviesFlow
的电影列表,而 genres
将
是 genresFlow
.
中的流派列表
但如果您只需要单独的这两个列表,您可以直接在 Activity
中收集这两个流,而不是先压缩再解压缩。
在我的应用程序中,我想要 combine
两个不同的列表,为此我使用了 kotlin flow
和 combine
& 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
!
写it到collect
时,说我select索引如:it[0]
但我想获取每个列表并设置为 recycler adapter
。
我该怎么办?
如果我理解你的问题是正确的,你想将“成对列表”转换为“成对列表”。您可以为此使用 unzip
函数。
viewModel.loadData().collect {
val (movies, genres) = it.unzip()
}
此处,movies
将是来自 moviesFlow
的电影列表,而 genres
将
是 genresFlow
.
但如果您只需要单独的这两个列表,您可以直接在 Activity
中收集这两个流,而不是先压缩再解压缩。