이 블로그는 더 이상 업데이트되지 않습니다.

최신 내용을 확인하시려면 여기를 클릭해주세요.

코드에서 생성한 View에 Id 생성하기

안드로이드에서 ListView를 사용하면서 ViewHolder 패턴이란 것을 많이 사용해 봤을 것이다.
(아니라면 [Android] ListView 구현시에 뷰홀더(ViewHolder) 사용하기 를 보자.)

viewHolder 패턴을 사용하면서 하나의 ListView에 서로 다른 구조를 가진 View들을 보여주게 되면, convertView.getId() 메서드를 이용하여 View의 교체 여부를 결정하게 된다.

위와 같은 코드를 사용하면서, 차츰 View.getId() 메서드를 이용해 View를 비교하는 방법을 즐겨 사용하게 되었는데, 그러던 와중에 문제점이 하나 발생했다.

만약 Id를 가져오고자 하는 View가 코드상에서 생성된 View라면, Id가 없다…
따라서 Id를 따로 생성해 주어야 한다.

API Level 17 부터는 View.generateViewId() 메서드를 사용하면 되겠지만, 보통 진저브레드까지 지원하도록 앱을 만드는 나는 사용할 수 없었다.

그럴 때 사용할 수 있는 메서드가 있다.
역시 내가 구현한 코드는 아니지만, 유용해보여 소개한다.

* 참고
http://stackoverflow.com/questions/1714297/android-view-setidint-id-programmatically-how-to-avoid-id-conflicts