[android] MVVM – 8. ViewPager

[android] MVVM – 8. ViewPager

지금까지는 어지간하면 데이터 바인딩만 사용해도 되는데, ViewPager는 전부 다 그렇게 하기에는 조금 무리가 있는 것 같다.

일단 Activity의 getSupportFragmentManager() 를 어댑터에 넘겨줘야 하는데,  @BindAdapter를 사용하면 메소드를 public static 으로 선언해야해서  activity의 static 변수를 선언해둬야 하는데, 코드가 더러워 보인다.

게다가 예제에서는 좌우 페이지 넘김 버튼도 같이 넣고 싶은데, 이렇게 하면 ViewPager를 드래그로 넘겼을 때 버튼의 enabled 를 바꾸기위한 작업도 들어가야해서 이래저래 꼬이는 부분이 생긴다. 물론 내 실력 탓이겠지만…

 

http://stackoverflow.com/a/42208693/1025379 이 방법을 이용하면 될 것 같다!!

 

일단 ViewPager 에서 사용할 어댑터를 만든다.

 

 

 

뷰모델을 만든다. 현재 페이지, 전체 페이지 갯수, 첫 페이지인가, 마지막 페이지 인가를 판단하는 변수만 있으면 되지 싶다.

 

 

 

레이아웃을 그린다.  페이지 넘김 버튼은 tag를 이용해서 1페이지씩 바뀌게 했다.

 

 

액티비티에서 어댑터에 프래그먼트를 넣고, 강제로 ViewPager를 찾아서 setAdapter()를 호출했다.

 

 

 

드래그로 좌우이동했을 때 버튼의 사용여부가 자동으로 바뀌고, 버튼으로도 페이지를 넘길 수 있다.