Вам не нужно возвращать View
из метода instantiateItem()
, вы также можете вернуть упаковщик, содержащий ваши ExoPlayer
и ваши View
.
например
data class Wrapper(val view: View, val player: ExoPlayer)
И в вашем PagerAdapter
:
override fun instantiateItem(container: ViewGroup, position: Int): Any {
[...]
return Wrapper(layout, exoPlayer)
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
val wrapper = `object` as Wrapper
container.removeView(wrapper.view)
// Release the player here.
wrapper.player.doSomething()
}
Если вы хотите вместо этого вернуть представление из instantiateItem()
, вы можете присвоить ExoPlayer
в качестве тегачтобы получить его позже.
например
override fun instantiateItem(container: ViewGroup, position: Int): Any {
[...]
return layout.apply {
setTag(exoPlayer)
}
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
val view = `object` as View
container.removeView(view)
// Release the player here.
val exoPlayer = view.getTag() as ExoPlayer
exoPlayer.doSomething()
}