class SampleInfinitePagerAdapter(
fragmentManager: FragmentManager
) : FragmentStatePagerAdapter(fragmentManager) {
companion object {
const val MAX_PAGE_COUNT = 100
}
var list: List<Hogehoge> by Delegates.observable(emptyList()) { _, previous, latest ->
notifyDataSetChanged()
}
private var realCount: Int = 0
get() = list.size
override fun getItem(position: Int): Fragment {
var id = 0
// listが空以外
if (realCount > 0) {
val diff = (position - MAX_PAGE_COUNT / 2) % realCount
val index = if (0 > diff) realCount + diff else diff
id = list[index].id
}
return SampleFragment.createInstance(id)
}
override fun getCount(): Int = MAX_PAGE_COUNT
override fun getPageTitle(position: Int): CharSequence? {
var title = ""
// listが空以外
if (realCount > 0) {
val diff = (position - MAX_PAGE_COUNT / 2) % realCount
val index = if (0 > diff) realCount + diff else diff
title = list[index].title
}
return title
}
}