본문 바로가기
2023년 이전/Android

ViewPager2에서 ui 업데이트 방법

by JeongUPark 2021. 12. 3.
반응형

ViewPager2를 사용할때

notifyDataSetChanged()를 호출 후 Fragment의 ui를 변경해 줘야 할 떄가 있습니다.

그러기 위해서는 다음과 같이 작업하면 됩니다.

Adapter에서

override fun onBindViewHolder(
        holder: FragmentViewHolder,
        position: Int,
        payloads: MutableList<Any>
    ) {
        val fragment  = fa.supportFragmentManager.findFragmentByTag("f$position")
        fragment?.let{
            if( it is UploadImageFragment){
                it.updateItem(uploadList[position])
            }
        }
        super.onBindViewHolder(holder, position, payloads)
    }

위와 같이 onBindViewHolder를 호출하고

fragment가 null이 아닐 떄 그 fragment에 update관련 함수를 만들고 호출하여 업데이트를 해주도록 합니다.

fragment가 null이 아닐때 체크하는 이유는 viewpager에 아무런 데이터가 없는데 notifyDataSetChanged 가 불리면 supportFragmentManager에서 항목을 찾으면 없기 때문에 이때 null이 들어올 수 있고, 이때 이 fragment를 사용하면 앱이 죽기 떄문 입니다.

반응형