안드로이드 ViewPage2 무한스크롤 만들기 1

신정훈·2023년 1월 18일
0
post-thumbnail

현재 TMDB 사이트의 오픈 API를 이용하여 인기 영화를 받아와 뷰페이저로 보여주는 앱을 만들고있다.
나는 받아온 인기 영화 목록이 무한 스크롤링 되도록 뷰페이저를 이용하여 만들고 싶었다.

가장 먼저 생각이 들었던 처음 방식은 영화 리스트 객체 앞과 뒤에 마지막 아이템과 첫번째 아이템을 붙여주는 것이었다.

newList 리스트를 보면 첫번째에는 마지막 아이템과 마지막번쨰에는 첫번째 아이템을 넣어주었다.

그 후 ViewPager의 어뎁터를 초기화 한 후 아이템의 시작 순서를 currentItem를 1로 초기화한다. 실제 첫번째 아이템은 index값이 1인 아이템에 들어있기 때문이다.

이렇게 했을때 화면에는 이런 형태로 나타나게 된다.

그 후에 왼쪽으로 스와이프 시 currentItem의 값을 배열의 크기값을 넣어줘서 현재 보고있는 아이템

값이 마지막을 보고있도록 속임수(?)를 써서 작업을했다.



결과물은 위의 영상처럼 동작을 하게 된다!

하지만, 화면에서 보이는 것과 같이 마지막 아이템과 첫번째 아이템으로 이동시 깜빡거리는 문제가 있었다.

문제가 되는 소스는 이부분이다.

when절에서 0인 경우를 보자.(0번째 경우와 listSize-1인 경우 둘다 동일하게 깜빡인다.)

스크롤시 0 인덱스를 참조하는 경우 currentItem을 list -2를 셋팅하게 되어있다.

0번째 인덱스를 참조시 실제 영화목록 리스트의 마지막 아이템을 다시 셋팅을 하기 때문에 화면이 깜빡

이는 현상이 나타나게된다.

콜백 함수인 onPageSelected 부분에 position 값 로그를 찍어봐도 0 -> 20 (마지막아이템)으

로 2번 호출되며 포지션값이 변경되는것을 볼수가 있다.

그래서 다른 방식을 찾았고 해결된 방식은 다음 게시글에 올리도록하겠다.

profile
주니어 안드로이드 개발자

0개의 댓글