마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뷰페이저에 관해 궁금한게 있습니다.

0 추천

안녕하세요.

뷰페이저에 대해서 궁금한게 있습니다.

뷰페이저로 각각의 프래먼트를 구성하였습니다.

근데 내용을 바꾸고 나서 notifydatachange를 호출해도 리스트뷰처럼 새로고침이 되지 않아

찾아보니

@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return POSITION_NONE;

}

이렇게 getItemPosition을 오버라이딩하여 POSITION_NONE를 리턴해야 뷰를 다시 그린다고 하더라구요.

이부분이 잘 이해가 되질 않습니다.

왜 위의 메서드를 오버라이드해야하며 왜 저 값이 리턴되면 뷰가 다시 그려지는지 궁금합니다.

또한 위와 같이 처리하였을때 바로바로 뷰가 새로고침 되긴 하는데 문제점이 있는 방법은 아닌지 궁금합니다. 

 

갸아악 (21,260 포인트) 님이 2014년 9월 3일 질문

1개의 답변

+1 추천
 
채택된 답변
getItemPosition을 오버라이드하지 않으면

PagerAdapter가 기본적으로 POSITION_UNCHANGED를 리턴하니 새로고침이 안되겠죠

게다가 이건 어디까지나 position이 바뀐건지 보는거고 ViewPager는 내용엔 관심이 없죠

그렇다고 POSITION_NONE을 리턴하면

ViewPager에 붙은 뷰(fragment)들을 전부 destroy하고 새로 만들어붙이니 효율적이라고 볼 수 없겠네요

fragment의 내용이 바뀌는거는 fragment안에서 해결하는게 좋겠고

ViewPager 안에서 fragment의 위치가 바뀌는 경우라면 getItemPosition에서 적절한 position을 리턴해주는게 좋겠죠
alkyne (22,960 포인트) 님이 2014년 9월 3일 답변
갸아악님이 2014년 9월 5일 채택됨
...