안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요,
이미지,텍스트,체크박스등을 한꺼번에 묶어서 임의의 위치에 10개정도를 뿌려줘야하는 어플을 만들고 있습니다.
일일이 다 layout을 구성하기엔 코드의 압박이 너무 심해서
이미지뷰,텍스트뷰,체크박스를 하나의 ViewStub으로 묶고, ViewStub을 뿌려주는 방식으로 코드를 작성했는데,
ViewStub으로 묶다보니,
Checkbox checkBox1 = (CheckBox) stubItem1.findViewById(R.id.stub_checkbox);
Checkbox checkBox2 = (CheckBox) stubItem2.findViewById(R.id.stub_checkbox);
이런식으로 코드를 작성하게 되었는데..
저는 어짜피 부모(?)인 각각의 ViewStub 이 서로 다른 아이디가 있으니, 당연히 자식(?)인 checkbox가 다른 ID를 갖고 있을거라고
생각했으나,
어짜피 하나의 ViewStub을 불러와서 쓰는거고, 위의 코드처럼 결국 같은 ViewStub layout에서 ID를 갖고오다보니
단순히 R.id.stub_checkbox로 구분이 되는건지...
checkBox1과 checkBox2의 ID가 같은 값이 넘어옵니다. 이렇게 10개의 checkbox를 사용하다보니
checkbox중 어느게 체크가 되었는지 구분해야 하는데.. checkBox1.getId() .... checkBox10.getId() 모두가 같은 ID라서...
구분해서 어느게 체크된건지 알수 있는 방법이 없습니다.
ViewStub을 쓰면서 이 문제를 해결할 방법이 있는지.. 아니면 꼭 ViewStub이 아니더라도.. 여러개를 하나로 묶어서
서로 구분해서 쓸만한 방법이 있는지.. 그런 부분이 궁금합니다.
도움 부탁드립니다! 감사합니다.
이미지,텍스트,체크박스등을 한꺼번에 묶어서 임의의 위치에 10개정도를 뿌려줘야하는 어플을 만들고 있습니다.
일일이 다 layout을 구성하기엔 코드의 압박이 너무 심해서
이미지뷰,텍스트뷰,체크박스를 하나의 ViewStub으로 묶고, ViewStub을 뿌려주는 방식으로 코드를 작성했는데,
ViewStub으로 묶다보니,
Checkbox checkBox1 = (CheckBox) stubItem1.findViewById(R.id.stub_checkbox);
Checkbox checkBox2 = (CheckBox) stubItem2.findViewById(R.id.stub_checkbox);
이런식으로 코드를 작성하게 되었는데..
저는 어짜피 부모(?)인 각각의 ViewStub 이 서로 다른 아이디가 있으니, 당연히 자식(?)인 checkbox가 다른 ID를 갖고 있을거라고
생각했으나,
어짜피 하나의 ViewStub을 불러와서 쓰는거고, 위의 코드처럼 결국 같은 ViewStub layout에서 ID를 갖고오다보니
단순히 R.id.stub_checkbox로 구분이 되는건지...
checkBox1과 checkBox2의 ID가 같은 값이 넘어옵니다. 이렇게 10개의 checkbox를 사용하다보니
checkbox중 어느게 체크가 되었는지 구분해야 하는데.. checkBox1.getId() .... checkBox10.getId() 모두가 같은 ID라서...
구분해서 어느게 체크된건지 알수 있는 방법이 없습니다.
ViewStub을 쓰면서 이 문제를 해결할 방법이 있는지.. 아니면 꼭 ViewStub이 아니더라도.. 여러개를 하나로 묶어서
서로 구분해서 쓸만한 방법이 있는지.. 그런 부분이 궁금합니다.
도움 부탁드립니다! 감사합니다.
2009.11.23 14:54:29
setTag로 뎃글달려했는데 setId가 있었군요;;
근데 리소스아이디를 통해 find했는데 setId로 다시 설정하면....
이벤트 Listener에서 view.getId하면 set으로 재설정된 아이디가 리턴되나요?
이벤트 Listener에서 view.getId하면 set으로 재설정된 아이디가 리턴되나요?
그리고 만에하나 이미 있는 ID를 겹쳐쓰면 어떻게 될지 궁금하네요...(로또 확률??)
2009.11.23 15:52:05
게쓰님// Sets the identifier for this view. The identifier does not have to be unique
in this view's hierarchy. The identifier should be a positive number. 그냥 이 설명 보고.. positive number면 아무 상관 없겠지.. 라는 막연한 생각으로 썼는데, 동작에 문제가 없네요. ^^;; 그리고 말씀하신것처럼 getId 하면 set으로 설정된 Id가 리턴되네요~~ setTag 도 있었군요!! 답변 감사드립니다~! ^^
CheckBox checkbox1 = (CheckBox) stubItem1.findViewById(R.id.stub_checkbox);
checkbox1.setId(1);
CheckBox checkbox2 = (CheckBox) stubItem2.findViewById(R.id.stub_checkbox);
checkbox2.setId(2);
이런식으로 하면, 서로 다른 아이디를 지정해줄 수 있었네요. setId의 역할이 뭔지 몰랐는데..
굳이 꼭 이게 역할은 아니겠지만, 이런 용도로 쓸 수 있다는걸 첨 알았습니다.
setId를 하기전엔 각각의 CheckBox들의 아이디가 같았지만 위와 같이 하면 서로 다른 아이디를 줄 수 있습니다.