틴더처럼 스와이프로 게시물을 탐색하는 앱을 만들고있다.
이는 swipeCardView라는 어댑터뷰를 통해 구현되고, 그 어댑터뷰에 연결할 어댑터는 ArrayAdapter를 상속받는다.
그렇게 잘 개발하다가 스와이프시에 카드뷰를 생성하는데 버벅거리는 이슈가 발생했다.
처음에는 카드에 들어갈 사진을 서버로 http요청하는게 잦아서 그런 줄 알고, 한번 요청할때 좀더 많은양의 데이터를 받아놓는 방식으로 최적화했는데 그래도 여전히 이슈가 해결되지 않았다.
그래서 나는 호출스택을 타고들어갔다.
그리고 라이브러리의 어댑터뷰가 ArrayAdapter의 getView의 convertView를 아예 null로 하드코딩해서 넣고있는걸 발견했다.
도대체 왜 이렇게 만들었는지 모르겠다.
이말은 어댑터의 최대이점인 ‘뷰를 재활용한다' 라는 기능을 아예 못하고 있는 것이였다.
아무튼 나는 라이브러리를 바꿨다. 전의 건 오래된 라이브러리인 탓인지 RecyclerAdapter와 호환이 안됬었지만 새로 바꾼 라이브러리는 가능했다. 적용을 하고 나니 스와이프가 아주 부드러웠다.
View를 infalte하고 findviewById로 View를 찾는게 내 생각보다 비용이 많이드는 작업이였나보다.
이번 이슈로 얻은 교훈은 라이브러리는 그냥 쓰는 것이 아니라 어느정도 이해를 바탕으로 사용해야 한다는 것이다.
'안드로이드 앱개발' 카테고리의 다른 글
파일입출력2 : 저장소 (Android Studio Internal/External Storage) (0) | 2020.10.27 |
---|---|
파일입출력 1 : 쓰고 읽기 (File I/O in Kotlin) (0) | 2020.10.27 |
AdMob nativeAd 를 RecyclerView를 활용해 표시하기 (nativeAd with RecyclerView) (0) | 2020.10.27 |
volley로 이미지 업로드 (volley multipart request) (0) | 2020.10.27 |
액티비티(Activity)와 인텐트(Intent) (0) | 2020.10.27 |