안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요

제가 구현중인 어플은 리스트뷰에 row로
TextView 2개와 Button 2개를 넣어서 화면을 구성했습니다.
앱 실행시 버튼 1은 각리스트뷰에 전부 그려주고
버튼 2는 INVISIBLE 로 설정해 놓고 버튼 1을 눌렀을때
해당 포지션에 버튼2 다시 VISIBLE 하려고 합니다.
그런데 getView 의 특성 때문에 화면에 보여지는 리스트 수만큼 다시 그려주게 되어서
지정한 포지션과 화면상의 제일 마지막 포지션에 같이 버튼을 VISIBLE 하는 현상이 있습니다.
그리고 스크롤을 움직였을때 버튼이 사라지거나 위치가 바뀌는 현상도 같이 발생 했습니다.
현상에 대한 조언 부탁드리겠습니다.
2011.06.30 16:51:12
버튼 위치 별로 상태에 대한걸 Adapter 안에서 리스트나 맵등의 컬렉션으로 포지션 별로 상태를 넣어둔 멤버변수로 가지고 있다가 포지션 마다 버튼 세팅을 다 세세하게 해줘야 합니다.
ListView류의 데이터가 어디까지 있는지 장담할 수 없는 뷰 같은 경우는 뷰를 다 만들 수 없으니 화면에 보이는 만큼 생성하고 재활용 합니다. 그러니까 1번 부터 7번까지 항목이 한화면에 표시된다고 했을때 스크롤 해서 8번이 나타날때 일어나는일이 1번에 있던 뷰가 7번 밑으로 붙어 옵니다. 1번에서 셋팅했던 상태를 그대로 가져 오게 된다는거죠 저번에 어떤 분은 조건값에 따라 뷰를 사라지게(GONE)은 있는데 VISIBLE이 없어서 화면을 스크롤 여러번 하다보면 버튼들이 다 사라졌다는 글도 있었죠




비슷한 질문을 본 거 같은데...
커스텀리스트 쓰신 거 맞죠? 리스트에 boolean 값하나 추가해서 버튼 visible 세팅을 해주시는게 편한 방법 같네요.