마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListView 에서 layout이 다른 두개 이상의 Cell을 사용하는 경우 최적화는 어떻게 하시나요?

0 추천

ListView 에서 Cell을 보여줄 때 

예를 들어서 iOS 섹션처럼 보여지는 section.xml 과

내용을 보여주는 infocell.xml 

이렇게 2가지 타입으로 리스트뷰 getView 에서 보여주고 있습니다.

내용이 많이지면 리스트뷰가 느려지고 앱이 죽는 경우가 있더군요 

찾아보니 단순하게 

convertView = mInflater.inflate(R.layout.list_row, null);

이런식으로 계속 inflate 로 가져오도록 해서 느려지는것 같더군요

그런데 위에 처럼 2가지 타입의 셀을 구현하면서 처음에는 convertView 가 null 일때만 가져오도록 했더니

계속 inflate 로 새로 가져오지 않는한 구현이 잘 안되더라구요

 

레이아웃안에 2가지 형식의 레이아웃을 모두 넣어서 타입에 따라서 내부 레이아웃을 보여주고 숨기는 형태로 구현해야 할지 아니면 더 효과적인 방법이 있을지.

혹시 리스트 뷰에서 2가지 타입의 셀을 사용할 때 최적화하는 방법이 있을까요 ??

스댕그릇 (280 포인트) 님이 2015년 5월 14일 질문

2개의 답변

+2 추천
ListView ViewHolder 방식을 적용해, 매번 inflate 하지 않고, convertView가 null일때만 type 별로 inflate 하시면 될 것 같습니다. 아니면 두 개의 cell이 서로 복잡하지 않다면 말씀하신대로 하나의 레이아웃 안에 선언해놓고 type별로 visible/gone 하는게 가장 심플할것 같습니다.
작전동 (5,890 포인트) 님이 2015년 5월 14일 답변
0 추천
http://www.survivingwithandroid.com/2014/08/android-listview-with-multiple-row.html

base adapter 에는 getItemViewType, getViewTypeCount 와 같은 다중 layout 을 위한 항목들이 존재 합니다. 확인하세요
aucd29 (218,390 포인트) 님이 2015년 5월 14일 답변
...