Debbi Story

ViewPager2의 notifyDataSetChanged() 안될 때 본문

안드로이드/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)
    }
}