오늘 하루의 느낀점
230823 Today I Learned!
조예_
2023. 8. 23. 20:29
리스트뷰..리사이클러뷰..
커스텀뷰..그리드뷰...
뭔 뷰가 이렇게 많아.... 뭘 연결하고 뿌려주고 잉..
(후발대 과제도 리사이클러뷰인데.. 머리가 터질듯..뷰 어댑터 뷰홀더 뭐가 이렇게 새로운 용어가 많은지..)
지금 대충 정리된 내용 말고도 추가적으로 따로 게시물 파서 정리를 더 해야겠다
(저번에도 그렇게 말만하고 까먹었지만..ㅠㅠ)
우선 가장 대표적인 리스트뷰와 리사이클러뷰에 대해 비교해보고자 한다!
리스트뷰란?
데이터의 목록을 세로방향으로 나열하여 화면에 표시하는 뷰그룹의 한 종류
리스트 항목이 갱신될 때마다 매번 아이템 뷰를 새로 구성해야 하기 때문에 성능저하를 야기하는 요인이 됨!
리사이클러뷰란?
한 화면에 보기 힘든 수많은 데이터를 스크롤 가능한 리스트로 출력하는 뷰그룹의 한 종류
아이템을 표시하기 위해 생성한 뷰를 재활용하기 때문에 리스트뷰의 성능저하 문제를 해결함
구글은 RecyclerView의 사용을 권장하고 있음
리스트뷰 vs 리사이클러뷰
RecyclerView | ListView | |
ViewHolder | ViewHolder 패턴을 이용한다. RecyclerView.Viewholder |
ViewHolder 패턴을 이용할 필요가 없다. |
Item Layout | 가로/세로/지그재그 방향 모두 지원한다. RecyclerView.LayoutManager |
세로 방향만 지원한다. |
Item Animation | 아이템 애니메이션을 처리하는 클래스가 있다. RecyclerView.ItemAnimator |
아이템이 추가/제거될 때에 적용할 수 있는 애니메이션이 없다. |
Adapter | 데이터를 제공하기 위한 사용자 정의 구현이 필요하다. RecyclerView.Adapter |
ArrayAdapter/CursorAdapter와 같은 다양한 소스에 대한 어댑터가 존재 |
Decoration | RecyclerView.ItemDecoration 객체를 사용하여 더 많은 구분선을 설정해야한다. | android:divider 속성을 이용하여 리스트에 있는 아이템들을 쉽게 구분할 수 있다. |
Click Detection | 개별 터치 이벤트를 관리하지만 클릭 처리 기능이 내장되어 있지 않다. RecyclerView.OnItemTouchListener |
AdapterView.OnItemClickListener 인터페이스가 있다 |