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

동적으로 생성한 뷰에 어떻게 id를 주나요?

0 추천

안녕하세요.

동적으로 뷰 생성을 아래와 같이 하였습니다.

LinearLayout layout = new LinearLayout(mContext);
   layout.setOrientation(LinearLayout.HORIZONTAL);
   layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
   EditText edtPN = new EditText(mContext);
   edtPN.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
   layout.addView(edtPN);

 

그런데 나중에 edtPN 을 findViewById 로 가져오고 싶은데,

edtPN에 ID를 어떻게 주어야 할지 모르겠습니다..

 

XML에서 할 때는 바로 R.java에 생기는데...

코드에서는 어떻게 해야할지 막막하네요..

 

도움 부탁드립니다.

 

감사합니다!

apcnic (1,420 포인트) 님이 2013년 4월 3일 질문

1개의 답변

0 추천
 
채택된 답변

edtPN.setId(int) 로 id 설정 가능합니다. 

appa (3,380 포인트) 님이 2013년 4월 3일 답변
apcnic님이 2013년 4월 3일 채택됨
그런데 아무런 id나 주면 안될것 같아서.. 숫자가 우연치 않게 xml에 있는 뷰의 id와 겹치거나 하면 어떻하나요?
0이나 1등 어떤 int값을 줘도 상관 없습니다. 다만 자동 생성된 id와 겹칠까 걱정되신다면, 확실한 것은 아니지만 R파일을 보면 자동 생성된 id들은 0x7fxxxxxx의 범위이므로 피해서 사용하시면 되지 않을까 합니다.
한가지 궁금한 것이 있는데 동적 생성한 뷰를 findViewById를 통해 가져와야 할 상황이 있나요?
adapter의 getView 에서 셀을 동적으로 생성하려고 했는데,
viewHolder를 사용해서  listener를 연결하려고 하니까
tag던 id던 주긴 해야하더라구요..
그냥 xml로 했어요 ㅎㅎ
감사합니다^^
그렇군요. 그런 경우라면 동적 셀을 담을 parent layout을 holder로 등록하고 동적으로 생성된 셀 배열을 객체가 가지고 있으면 될 것 같은데요.
xml로 해도 된다면 그 편이 편하겠죠.
동적으로 생성된 셀 배열을 객체가 가진다는 건 무슨 뜻인가요?
조금만 쉽게 설명 부탁드립니다...
해당 어댑터에 등록될 객체가 동적으로 생성될 셀을 저장할 배열이나 리스트를 가지고 있고, getView()에서 동적 셀을 담을 layout(holder)에 add를 해주면 될 것 같다는 얘기였습니다.
어댑터 ViewHolder에 대해서 검색해 보세요
...