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

클릭된 listview 배경색

0 추천
listview 클릭했을 때, 배경색 바꾸는 방법이

리소스 파일에서는 listselector를 사용하는 방법이 있는 것 같아요.

listview를 클릭했을 때, 그 listview에 있는 text를 따로 읽어오면서, listview의 색상을 변경하려고 하는데, 이게 터치 민감도에 따라서 listview text는 읽어오지 못했는데 터치를 인식해서 배경색은 변하게 되는 경우가 있는 것 같아요. 그래서 정확하게 text를 읽어왔을 때, 배경색을 변경하기 위해서 배경색 변경을 java에서 처리하려고 합니다.

그런데 자바에서는 setBackgroundColor나 다른 경우가 더 있는 것 같긴 한데, 이 경우에는 하나의 listview 항목을 선택했다가, 다른 항목을 선택했을 때, 배경색이 그대로 남아있게 되어있어요. 다른 항목을 선택할 때, 이전에 선택한 항목은 다시 원래대로 되돌리고 싶은데 어떻게 해야 될까요??
걍 취미로 (230 포인트) 님이 2022년 9월 15일 질문

1개의 답변

0 추천
두가지 접근방법이 가능할 것 같은데요.
리스트뷰에 보여질 데이터에 선택상태를 가지고 있도록 하거나, checkbox나 radiobox계열의 checked 속성이 있는 뷰를 selector와 함께 리스트뷰 아이템으로 사용할 수도 있을 것 같습니다.
첫번째 방식을 사용한다면 어탭터 클래스 멤버로 SparseIntArray타입을 하나 선언하고 선택시에  해당 포지션을 여기에 추가하고 선택해제시에는 제거 하는 식으로 하신다음 getView에서 해당 포지션의 선택 여부를 읽어와서 선택된 경우에는 배경색을 바꾸어 주시면 될 것 같습니다. 모발폰이라 코드는 첨부하기가 곤란하네요.
spark (226,420 포인트) 님이 2022년 9월 15일 답변
Compound control계열의 뷰를 만드셔서 setSelected메소드를 오버라이드 하는 것도 괜찮은 방법 같아 보입니다.
...