물에 살고싶은 개발자

뷰페이저 데이터 갱신을 하기위해 본문

Android

뷰페이저 데이터 갱신을 하기위해

돼지사랑 2018. 1. 13. 00:31

뷰페이저 데이터를 갱신하기 위해서는

PagerAdapter.notifyDataSetChanged();

이 한줄로 될줄알았다.


하지만 갱신이 완벽하게 되진 않더라.


일단 내가 1,2,3,4,5를 불러둔 상태에서


5를 보고있는 상태에서 데이터를 6,7,8,9,10으로 바꾸고

PagerAdapter.notifyDataSetChanged();

를 호출하게 되면 현재 보고있는 5와 4는 그대로 남고 그 뒤쪽만 갱신이 된다.


즉, 갱신된 데이터는 6,7,8,4,5 가 되는데, 


내가 7까지 슬라이드를 했다가 다시 8로 가는순간 4 가 9로 바뀌고, 9로 가면 5가 10이된다.


즉 현재 보고있는 페이지에서 앞뒤로 하나씩 

imagePager.getCurrentItem();

위 Method를 호출해서 3이 나왓으면 2,4가 갱신이 안된다는 뜻이다.


왜 이렇게 만들어놧는지는 이해가 안되지만, 아무튼 중요한건 notifyDataSetChanged() 로는 원하는대로 갱신이 안될수도있다는 얘기다.


잠깐 구글링을 해보니 답이 쉽게 나오더라.   


@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}

이 Method를 오버라이드 해서 리턴값을 저렇게 NONE 상수값으로 바꾸면 된다.


저 상수값을 리턴해주면 전체 데이터를 갱신한다.

(전체 데이터를 삭제하고 새로 갱신하는것으로 추측됨, 테스트는 안해봄)


주린배를 움켜쥐고 야밤에 헤롱거리면서 작성했더니 뭔소린지 모르겠네


아무튼 요는 getItemPosition을 오버라이드하고 POSITION_NONE을 리턴해줄것!


Comments