본문 바로가기

나의 플랫폼/안드로이드

[Android] FragmentPagerAdapter 갱신!!!

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

FragmentPagerAdapter를 사용할 경우 ViewPager와 연동을 합니다.

이때 특정 Page에 Fragment를 갱신하고 싶어 모두 알고 계시는 

notifyDataSetChanged 함수를 호출 합니다.


하지만! 위 함수를 호출 하더라도 갱신이 되지 않죠!!

이럴 경우 아래와 같은 방법을 해보세요.


1. FragmentPagerAdapter 대신 FragmentStatePagerAdapter를 사용한다.

2. getItemPosition 함수를 오바라이딩 한다.

3. getItemPosition 함수를 이용하여 특정 Fragment만 갱신 한다.


@Override
public int getItemPosition(Object object) {
if (여기는 특정 Fragement를 파악할 수 있는 조건) {
return POSITION_NONE;
} else {
return super.getItemPosition(object);
}
}


저 조건으로 여러가지를 넣을 수 있습니다.

1. Fragment에 setTag를 했다가 해당 Tag를 이용해서 찾고자 하는 Fragment인지 판단

2. Fragment를 상속하여 다양한 Fragment로 변경하여 instanceof 를 통하여 구분

3. Fragment에 특정 View가 존재하는지 파악


위 방법대로 셋팅을 하면 특정 Fragment에 대해 제어가 가능 합니다.

getItemPosition은 ViewPager에 정의 된 만큼 모두 돌아가니 꼭 조건문을 넣어서 사용하세요!!


참고 : http://stackoverflow.com/questions/10849552/update-viewpager-dynamically



댓글 분을 위해 만든 테스트 소스 입니다.

https://github.com/gorchg/FragmentStatePagerAdapter.git

참고하세요.