我有一个关于使用的问题,我还有一个有关使用 observeAsState()来自动填充可组合列表视图的问题。
我的可编辑内容如下
@Composable
fun getTopMovies() {
val topMovies by movieListViewModel.getTopMovies().observeAsState()
when (topMovies?.status) {
Status.Error -> Text("error")
Status.Loading -> {
Log.d("JJJ", "Loading ")
Text(text = "Loading")
}
Status.Success -> createMovieItemView(topMovies?.data?.results.orEmpty())
}
}
这使用MVVM进行网络调用以获取一些数据列表,并将其作为实时数据返回。
我遇到的问题是它似乎陷入了无限循环。如果我不使用observeeAsState,而只是使用正常的不可组合方式,即:
movieListViewModel.getTopMovies().observe(viewLifecycleOwner, Observer { ...}
它按预期方式工作,并且一旦从存储库/域层返回错误或成功,就会执行并结束。
这是下面的createMovieItemView:
@Composable
private fun createMovieItemView(movieList: List<MovieItem>) {
LazyColumnFor(items = movieList, itemContent = { movieItem ->
MovieListItem(MovieItemData(movieItem.posterPath.orEmpty(),
movieItem.title.orEmpty(),
movieItem.releaseDate.orEmpty(),
"some genra", ""), picasso)
})
}
自动填充可组合列表视图。
我的可编辑内容如下
@Composable
fun getTopMovies() {
val topMovies by movieListViewModel.getTopMovies().observeAsState()
when (topMovies?.status) {
Status.Error -> Text("error")
Status.Loading -> {
Log.d("JJJ", "Loading ")
Text(text = "Loading")
}
Status.Success -> createMovieItemView(topMovies?.data?.results.orEmpty())
}
}
这使用 MVVM 进行网络调用,以获取一些数据列表,并将其作为实时数据返回。
我遇到的问题是它似乎陷入了无限循环。如果我不使用watcheAsState,而只是使用正常的不可组合方式,即movieListViewModel.getTopMovies()。observe(viewLifecycleOwner,Observer {它会按预期工作,一旦从存储库/域层返回错误或成功,就会执行并结束。 / p>