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

RecyclerView의 checkbox기능은 xml상으로 구현해줘야 하나요?

0 추천
RecyclerView에 onLongClickListener를 붙여서 아이템 체크기능을 구현하려고 합니다.

파일탐색기를 예로들자면... LongClick시에 모든 리스트의 아이템들이(저같은 경우는 카드뷰로 구현했지만) checkbox가 생겨나고 체크가 가능한 상태로 되는 것이 일반적인 것으로 알고있습니다.

액션바는 Toolbar를 이용해서 바꿔주면 될듯한데...

checkbox는 xml상에서 적용시켜주는 것인지, 아니면 따로 Listener가 있는지 알고싶습니다.

(ListView에는 있는걸로 알고있습니다만, ListView가 아닌 RecyclerView와 CardView에 ArrayList를 연결하여 아이템 리스트를 표시해주고 있습니다. )
CEL (1,140 포인트) 님이 2015년 7월 30일 질문

1개의 답변

0 추천
 
채택된 답변

1. 롱클릭하면 CheckBox가 저절로 생겨 나는걸로 아시는건가요??

2. 아니면 CheckBox가 row 레이아웃에 포함되어 있는데 이 체크리스너를 어떻게 달아야 하는지 궁금하신건가요?

 

1번 답은 당연히 CheckBox를 xml에 추가 시켜서 롱 클릭 시 Visible 시키셔야 하고 

2번 답은 RecyclerView 아답터에 onBindViewHolder에서 해당 CheckBox에 체크 리스너를 달아주시면 될것 같습니다.

작전동 (5,890 포인트) 님이 2015년 7월 31일 답변
CEL님이 2015년 8월 23일 채택됨
처음에 xml로 구현했었습니다. 당연하게도 클릭한 뷰에만 체크박스가 visible됩니다. 원하는건 한 아이템을 클릭시 모든 아이템에 체크박스가 보이게 하고싶은데 그래서 checkbox와 관련된 리스너가 존재하는지 질문드린 것이였습니다.

현재 다른방법을 계속 시도해보곤 있지만 별 진전은 없네요... checkbox말고 다른 방법으로 구현해봐야 할 것같습니다.
한 아이템 클릭 시 모든 체크박스를 다시 보여주고 싶으시다면,
하나의 플래그 변수를 두고 onBindViewHolder 체크박스 visible/gone 분기 하시고
아이템 클릭 시 플래스 변수를 바꾸셔서 아답터의 notifydatasetchanged 호출 하시면 onBindViewHolder 다시 호출 되면서 처리하실 수 있습니다.
이제서야 댓글을 보네요;;
ToggleSelection을 따로 구현해주었습니다. 체크박스보다 이쪽이 디자인측면에선 좋은 것같네요.
답변 감사드립니다.
...