ViewPage2+FragmentStateAdapter,需要实现Fragment 添加、移动、删除等管理时,需要实现重写FragmentStateAdapter中的getItemId与containsItem的方法。例如:
class MyPagerAdapter(fm:FragmentManager, private var list: MutableList<MediaStoreFile>): FragmentStateAdapter(fm, lifecycle) {
override fun getItemCount(): Int = list.size
override fun createFragment(position: Int): Fragment = MyPhotoFragment.create(list[position])
// 重写该方法,可以实现add, move, remove items, containsItem也需要重写
override fun getItemId(position: Int): Long {
if (list.isEmpty()) {
return 0L
}
return list[position].id
}
// 该方法必须重写
override fun containsItem(itemId: Long): Boolean {
return null != list.firstOrNull {it.id == itemId}
}
}
以上可以实现Fragment item的add, move,remove等操作。