안드로이드/Tip
ViewPager2의 notifyDataSetChanged() 안될 때
Debbi
2020. 8. 18. 23:22
728x90
ViewPager2는 RecyclerView.Adapter 와 FragmentStateAdpater를 사용할 수 있습니다.
그중에 FragmentStateAdpater를 사용했을때 notifyDataSetChanged()를 해도 갱신이 안될 때
getItemId 와 containsItem 를 override 해주시면 됩니다!
아래는 예시 입니다.
class ViewPager2Adapter(fm: FragmentManager, private val fmList: ArrayList<Fragment>) : FragmentStateAdapter(fm) {
private val fmIds = fmList.map { it.hashCode().toLong() }
override fun getItemCount(): Int {
return fmList.size
}
override fun createFragment(position: Int): Fragment {
return fmList[position]
}
override fun getItemId(position: Int): Long {
return fmList[position].hashCode().toLong()
}
override fun containsItem(itemId: Long): Boolean {
return fmIds.contains(itemId)
}
}