아답터 클래스의 destroyItem 메소드 부분이 잘못 되었네요.
뷰페이저는 현재 페이지, 이전, 다음 페이지 총 3개의 페이지를 가지고 있고
더 많은 페이지를 가지게 되면 destroyItem 메소드를 통해서 넘치는 페이지를 지울려고 합니다.
즉, 쉽게 설명하면 총 3개의 페이지가 있습니다. (0번, 1번, 2번)
0번 페이지를 보여주고 있을 경우 뷰 페이저는
현재 페이지인 0번 뷰, 다음 페이지인 1번 뷰를 가지고 있습니다. 이전 페이지는 없으므로 안가지고 있지요.
그리고 다음페이지로 넘기면 1번 페이지가 보여집니다.
이때 뷰페이저는 현재 페이지인 1번, 이전 페이지인 0번, 다음 페이지인 2번 뷰를 가지고 있겠죠.
여기까진 괜찮습니다.
하지만 마지막 2번 페이지로 넘기게 되면
뷰 페이저는 현재 페이지인 2번, 이전 페이지인 1번을 가지고 이전의 이전 페이진 0번을 지우려고
destroyItem 메소드를 사용하게 됩니다.
하지만 현재 구현 부분은 뷰페이저에 등록된 모든 뷰를 지우도록 되어 있습니다.
((ViewPager)pager).removeAllViews();
그래서 2번 페이지만 넘기면 모든 뷰를 사라지게 하는 것입니다.
이부분을
((ViewPager)pager).removeView((View)view); 이렇게 수정해 보세요.
추가적으로 말씀드리면 뷰의 양이 적다면 굳이 지울 필요 없이 모두 가지고 있어도 됩니다.