lifecycleScope.launch {
viewModel.nowPlayingMovieList.collect{
sliderAdapter.submitData(it)
}
}
sliderAdapter.setOnItemClickListener {
val direction = MoviesFragmentDirections.actionMoviesFragmentToMovieDetailsFragment(it.id,it.poster_path)
findNavController().navigate(direction)
}
viewpagerSlider.apply {
setViewPager()
adapter = sliderAdapter
}
}
}
private fun setViewPager() {
binding.viewpagerSlider.clipToPadding = false
binding.viewpagerSlider.clipChildren = false
binding.viewpagerSlider.offscreenPageLimit = 3
binding.viewpagerSlider.getChildAt(0).overScrollMode = RecyclerView.OVER_SCROLL_NEVER
binding.viewpagerSlider.adapter = sliderAdapter
val middlePosition = Int.MAX_VALUE / 2
binding.viewpagerSlider.setCurrentItem(middlePosition, false)
binding.viewpagerSlider.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
val itemCount = sliderAdapter.itemCount
if (position == 0) {
binding.viewpagerSlider.setCurrentItem(itemCount / 2, false)
} else if (position == itemCount - 1) {
binding.viewpagerSlider.setCurrentItem(itemCount / 2, false)
}
}
})
val compositePageTransformer = CompositePageTransformer()
compositePageTransformer.addTransformer(MarginPageTransformer(25))
compositePageTransformer.addTransformer { page, position ->
val r: Float = 1 - abs(position)
page.scaleY = 0.90f + r * 0.10f
}
binding.viewpagerSlider.setPageTransformer(compositePageTransformer)
}
这是我的源代码;我正在尝试从我的 API 中获取一些图像。现在几乎无法正常工作。问题是当我打开片段时我看不到任何东西。我看到的是我的背景,但是当我移动到另一个片段并回到这里后,我可以看到我的视图分页器工作正常。问题是什么。怎么解决?
在您的
Fragment
onViewCreated
中尝试此代码:
lifecycleScope.launch {
viewModel.nowPlayingMovieList.collect {
sliderAdapter.submitData(it)
}
}
sliderAdapter.setOnItemClickListener {
val direction = MoviesFragmentDirections.actionMoviesFragmentToMovieDetailsFragment(it.id,it.poster_path)
findNavController().navigate(direction)
}
viewpagerSlider.apply {
setViewPager()
adapter = sliderAdapter
}
正如我在评论中所说,只有Flow的collect方法需要包装在协程中