정상에서 IT를 외치다

[Android, setUserVisibleHint] 뷰페이저에서 보인 화면만 데이터 받아오기 본문

안드로이드

[Android, setUserVisibleHint] 뷰페이저에서 보인 화면만 데이터 받아오기

Black-Jin 2018. 6. 4. 17:23
반응형

안녕하세요 블랙진 입니다.



한국에서는 카카오톡 앱을 많이 사용하는데 이는 4개의 ViewPager 로 구성되어 있습니다.


그렇지만 다른 화면으로 스와이프 했을 때, 해당 화면이 보여지고 나서 데이터를 서버로 부터 받아오는 것을 확인 할 수 있습니다.


이렇게 해당 뷰가 보여졌을 때 반응 할 수 있게 도와주는 함수가 setUserVisibleHint 입니다.


ViewPager 설정할 AFragment 가 아래와 같이 있습니다.


class AFragment : Fragment() {

    ...

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
Log.v(
"AFragment", "setUserVisibleHint $isVisibleToUser")
if(isVisibleToUser) {
//데이터 받아오기
}
}

}


이 때 해당 프레그먼트에서 setUserVisibleHint 를 override 할 수 있습니다.


이는 다른 화면이 보여지고 있을 때 false 값을 return 하고 해당 화면이 보여지면 true 값을 return 합니다.


이 값을 통해 내가 원하는 뷰가 ViewPager 상에 보여 줬을 때, 통신을 할 수 있도록 설정 할 수 있습니다.

반응형
Comments