안드로이드 앱개발

라이브러리는 이해하고 사용하자.

팀(Tim) 2020. 10. 27. 01:27

 

틴더처럼 스와이프로 게시물을 탐색하는 앱을 만들고있다.

이는 swipeCardView라는 어댑터뷰를 통해 구현되고, 그 어댑터뷰에 연결할 어댑터는 ArrayAdapter를 상속받는다.

그렇게 잘 개발하다가 스와이프시에 카드뷰를 생성하는데 버벅거리는 이슈가 발생했다.

처음에는 카드에 들어갈 사진을 서버로 http요청하는게 잦아서 그런 줄 알고, 한번 요청할때 좀더 많은양의 데이터를 받아놓는 방식으로 최적화했는데 그래도 여전히 이슈가 해결되지 않았다.

그래서 나는 호출스택을 타고들어갔다.

그리고 라이브러리의 어댑터뷰가 ArrayAdapter의 getView의 convertView를 아예 null로 하드코딩해서 넣고있는걸 발견했다.

도대체 왜 이렇게 만들었는지 모르겠다.

 

이말은 어댑터의 최대이점인 ‘뷰를 재활용한다' 라는 기능을 아예 못하고 있는 것이였다.

 

이걸 못한다.

 

 

아무튼 나는 라이브러리를 바꿨다. 전의 건 오래된 라이브러리인 탓인지 RecyclerAdapter와 호환이 안됬었지만 새로 바꾼 라이브러리는 가능했다. 적용을 하고 나니 스와이프가 아주 부드러웠다.

View를 infalte하고 findviewById로 View를 찾는게 내 생각보다 비용이 많이드는 작업이였나보다.

이번 이슈로 얻은 교훈은 라이브러리는 그냥 쓰는 것이 아니라 어느정도 이해를 바탕으로 사용해야 한다는 것이다.