안드로이드 개발 질문/답변
(글 수 45,052)
선배 개발자님들 안녕하세요 한달차 꼬꼬마 개발자입니다(__)
터치 이벤트시 레이아웃에서의 ID를 자바에서 변수로 받고싶어요
findViewById(R.id.textview1).setOnClickListener(mClickListener);
findViewById(R.id.textview2).setOnClickListener(mClickListener);
findViewById(R.id.textview3).setOnClickListener(mClickListener);
findViewById(R.id.textview4).setOnClickListener(mClickListener);
findViewById(R.id.textview5).setOnClickListener(mClickListener);
findViewById(R.id.textview6).setOnClickListener(mClickListener);
.
.
.
.
이 많은 양을 다 치는건 아니라고 생각이 들구요..한 300개 되거든요 ㄱ-;
id를 변수로 받고 싶은데
findViewById(R.id._________).setOnClickListener(mClickListener);
...이 한마디가 안풀리네요 ㅠㅠ
도와주세요 선배님들 ㅠㅠ




원하시는 거라면 제 생각으로는 layout 밑에 있는 오브젝트를 검사해서 이벤트 리스너를 할당하시는 방법이 더 효율적이지 않을까 생각합니다.
ViewGroup 클래스에 있는 getChildCount()와 getChildAt() 메소드를 이용하시면 원하시는 바를 해결하실 수 있을 것 같습니다.
public void setClickListenerToViews(ViewGroup parent, OnClickListener listener){
if (parent== null) return;
for (int i=0, j= parent.getChildCount(); i<j; i++){
View v = parent.getChildAt(i);
if (v instanceof ViewGroup) {
setClickListenerToViews(v);
} else {
}
}
Activity:
setClickListenerToViews((ViewGroup)findViewById(R.id.linearlayout1));
코드가 정확하지는 모르겠지만 이런 개념으로 접근하시면 되지 않을까 생각합니다.