반응형
LayoutInflater 를 사용할 때 다음과 같이 자주 사용하는데, 이럴 경우 inflate 되는 view의 root의 LayoutParam 이 무시된다.
LayoutInflater.from( getContext() ).inflate( R.layout.list_item, null );
문제는 parent 에 붙이는 것이 무시되기 때문이다. 따라서, inflate 를 할 때 붙여주는 parent 를 명시해주어야 한다.
LayoutInflater.from( getContext() ).inflate( R.layout.list_item, parent );
여기서 문제가 되는 경우는, ListView 를 사용할 때인데, 저렇게 parent 를 명시해주면, 해당 parent 에 inflate 하는 view 가 자동으로 addView 가 되기 떄문에 문제가 된다. 왜 문제가 되느냐? ListView 는 addView 함수에 대해 UnsupportedOperationException 을 뿜도록 설계되어 있기 때문이다.
이럴 경우, addView 를 사용하여 붙이지 않도록, 마지막 파라미터를 하나 더 추가해야 한다.
LayoutInflater.from( getContext() ).inflate( R.layout.list_item, parent, false );
자, 고민 해결.
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] manifest 에 명시된 app version 가져오기 (0) | 2013.01.03 |
---|---|
[android] OS Version 프로그램으로 query(조회) 하는 방법. (0) | 2013.01.03 |
[android] Map intent. (0) | 2012.12.27 |
[android] framework source code link (0) | 2012.12.17 |
[android] progurad 와 flurry 함께 사용하는 방법. (0) | 2012.12.15 |
댓글