class FooFragment : DialogFragment() {
private val viewPagerAdapter by lazy { BarViewPager() }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_foo, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initViewPager()
}
private fun initViewPager() {
viewPager.adapter = viewPagerAdapter
explanationPagerAdapter.views = listOf({ container -> createViewForContainer(container, R.layout.layout1) },
{ container -> createViewForContainer(container, R.layout.layout2) },
{ container -> createViewForContainer(container, R.layout.layout3) },
{ container -> createViewForContainer(container, R.layout.layout4) })
}
}
class FooPagerAdapter : PagerAdapter() {
var views: List<(container: ViewGroup) -> View> = emptyList()
set(value) {
field = value
notifyDataSetChanged()
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
return views[position].invoke(container).also {
container.addView(it)
}
}
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
override fun isViewFromObject(view: View, any: Any): Boolean = view == any
override fun getCount(): Int = views.size
}