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

switch문 쓰는데 질문좀 드릴게요

0 추천
레이아웃을 for문으로 데이터 갯수에 따라 동적으로 생성했습니다 생성할때 각 레이아웃마다 setid를 줘서 구분하여 클릭이벤트 처리를하고있습니다 지금 하고자 하는것은 만약 레이아웃이 3개가 생성되어 있고 1번째 레이아웃을 클릭했을때 선택한 레이아웃은 백그라운드 색을줘서 시각적으로 구분되게 하려고합니다 switch(item.getid()){ case 0: item.setbackgroundcolor(color.blu); break; case 1: break; . . item 은 레이아웃 객체이고 for문으로 생성할때마다 setid값을 줘서 swith문에서 getid로 case 0,1,2 에서 처리합니다 1번째 레이아웃을 터치했다면 case 0에서 백그라운드색을 변경시키는데 변경시키기전에 선택된 레이아웃 이외의 레이이웃들은 백그라운드색을 초기화시켜야 할거같은데 어떤 방법을 써야할까요??
초보임!! (410 포인트) 님이 2013년 3월 8일 질문

2개의 답변

0 추천
 
채택된 답변

동적으로 생성되는 레이아웃들이 같은레벨에 존재하고 

부모뷰에 동적으로 생성된 레이아웃들말고 다른 자식뷰는 가지고 있지않다는 가정하에

 

public void onClick(View v){
	
	ViewGroup parents = (ViewGroup)v.getParent(); //부모뷰를 찾음
	for(int i=0;parents.getChildCount();i++){  //자식갯수만큼 반복
		View child = parents.getChildAt(i);  //자식뷰를 찾음
		child.setBackgroundColor(Color.초기값); //자식뷰 초기화
	}
	v.setBackgroundColor(Color.BLUE);  //클릭뷰 강조
}

 

이런식으로 구현하면 됩니다.

 

백그라운드색상 변경말고 따로 처리할부분이 없다고한다면 위 코드대로하면 

레이아웃마다 setid를 하지않아도 됩니다. index로 자식뷰를 찾는 방식이라

얼룩돼지 (15,720 포인트) 님이 2013년 3월 8일 답변
초보임!!님이 2013년 3월 8일 채택됨
이런 방법이 있었네요. 감사합니다~~
이제 막 취직한 신입개발자라 많이 공부해야할듯하네요 ㅎㅎ
감사합니다 주말잘보내세요~~
0 추천
동적 생성된 뷰를 배열에 저장해놓고 전체 초기화하시면 되겠네요.
달기살 (12,990 포인트) 님이 2013년 3월 8일 답변
배열에 넣고 초기화시키는 방법도 좋네요 ㅎㅎ
답변 감사합니다 주말잘보내세요 ㅎ
...