티스토리 뷰

반응형

- ViewHolder : view들을 보관하기 위한 객체 ( ListView, RecyclerView )

 

- ViewHolder 장점 

리스트의 아이템들 내의 view들을 접근하기 위해서는 findViewById를 매번 호출해야 한다. 즉 동일한 작업을 진행하는데 findViewById를 이용하여 매번 xml의 view 태그를 접근해야한다. 이는 아이템이 많아질수록 성능 저하로 연결되는 요인이 된다. 따라서 이를 해결하기 위해, Holder 패턴을 적용한 ViewHolder를 이용한다. 

ViewHolder를 이용하여, 아이템의 각 view 태그를 저장하고, 아이템의 view를 접근할 때마다 Holder가 저장한 태그를 이용한다. 이렇게 되면 findViewById 의 함수 호출이 적기 때문에 성능 향상에 도움이 된다.

(여기서 성능저하란, 리스트뷰를 이용했을 때 스크롤에 대한 아이템을 가져오는 것에 대한 반응을 말한다. 즉 convertView를 이용하여 view에 대한 것은 재활용을 할 수 있지만, 데이터를 설정하기 위한 view 접근은 결국 다시 findViewById를 이용하여 접근해야 한다. 따라서, 확실한 성능향상을 위해, convertView 및 view의 태그를 저장하는 ViewHolder를 같이 적용해야 한다.)

 

- ListView와 RecyclerView의 ViewHolder

ListView와 RecyclerView 모두 ViewHolder를 이용하여 리스트의 아이템을 생성할 수 있다. 그러나 ListView의 경우 ViewHolder 이용에 강제성을 띄지 않는다. RecyclerView의 경우 ViewHolder 사용에 대한 강제성을 가진다.

 

 

*View

사용자 인터페이스 구성요소를 위한 기본 클래스로 사용자와 상호작용하기 위한 UI 컴포넌트(button, text fields, ...)를 생성하기 위해 이용된다.

*ViewGroup

Layout의 기본 클래스이며, view들의 집합인 컨테이너 역할을 한다.

*inflate

layout XML을 이용하여 부모의 ViewGroup에 계층적으로 view를 생성하고 추가하는 작업을 의미한다. inflate를 할 수 있는 부모 ViewGroup은 컴파일 단계에서 이미 layout XML을 가지고 있을 때만 가능하며, 이는 성능상의 문제때문에 그렇다고 한다.

 

참고 : 

https://mainia.tistory.com/5524

https://stackoverflow.com/questions/21501316/what-is-the-benefit-of-viewholder-pattern-in-android

https://developside.tistory.com/88

https://aroundck.tistory.com/39

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함