안드로이드 개발 질문/답변
(글 수 45,052)
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁㅁㅁㅁ
ㅁ<-토글버튼입니다 ㅎㅎ
토글버튼을 xml로 하나 만들고 아이디를 받아서
그리드 뷰를 사용해서 저런식으로 토글버튼을 나열했습니다.
근데 토글버튼을 라디오 버튼처럼 쓰고싶어서
(하나를 클릭하면 나머지는 꺼지는 싱글초이스 같은 거요ㅠ)
작업을하다보니
토글버튼 아이디가 하나자나요ㅠㅠ
각각 버튼을 따로 컨트롤 하기가 여간해선 쉽지않더군요
태그도 달아보고 여러가지 방법을 시도했지만 비슷하게 될뻔하던 순간엔 포지션이 이상하게 넘어와서
안되고 그러더라고요
혹시 방법을 아시거나 관련 샘플소스가있으신분은 좀 알려주실수있나요ㅠ
공지사항은 다읽었습니다-_-첨은아니지만;ㅋ
2010.11.20 09:32:28
버튼에 대한 직접 접근 형태로 해결하려고 하면 답이 안나올겁니다.
어댑터를 사용하는 뷰들은 재활용이라는 특이한 방식을 사용하기 때문에 직접 접근형태로 한다면
이상한넘이 바뀌고 할겁니다.
어댑터 안에서 해시맵으로 상태를 관리하고 그 상태를 통해서 getView에서 버튼을 변화시키는 형태로 해야 합니다.
하나 클릭했을때 그 상태가 checked==true라면, 해시맵에 특정 position만 true로 하고 나머지는 다 false로 바꿉니다.
checked==false라면 그냥 특정 position만 false로 하면 됩니다.
해시맵에서 바꿨으니 이를 버튼에 적용해야 할건데요... adapter.notifySetDataSet...() 호출하시구요.
getView에서 토글버튼의 상태를 해시맵에서 position을 통해 조회하여 얻은 값으로 바꿔주시면 됩니다.
어댑터를 사용하는 뷰들은 재활용이라는 특이한 방식을 사용하기 때문에 직접 접근형태로 한다면
이상한넘이 바뀌고 할겁니다.
어댑터 안에서 해시맵으로 상태를 관리하고 그 상태를 통해서 getView에서 버튼을 변화시키는 형태로 해야 합니다.
하나 클릭했을때 그 상태가 checked==true라면, 해시맵에 특정 position만 true로 하고 나머지는 다 false로 바꿉니다.
checked==false라면 그냥 특정 position만 false로 하면 됩니다.
해시맵에서 바꿨으니 이를 버튼에 적용해야 할건데요... adapter.notifySetDataSet...() 호출하시구요.
getView에서 토글버튼의 상태를 해시맵에서 position을 통해 조회하여 얻은 값으로 바꿔주시면 됩니다.



