Jetpack Compose CheckBox Single Selection

송훈기·2022년 8월 17일
0

Android

목록 보기
8/10

CheckBox를 활용해 LazyColumn에서 아이템을 보여주고 클릭된 상태를 보여주는 기능을 만들었습니다.
과정 중에 CheckBox의 SingleSelection하는 기능을 RecyclerView로는 바로 생각났는데, Compose로 생각을 전환하려니까 바로바로 되지 않았습니다. (머리가 늙은건가;;;)

아이디어는 단순한 Boolean 값에 의존하는 것이 아니라 SingleSelection의 핵심은 선택한 포지션을 저장한다는 것에 있다는 것을 잊지 않는다는 것입니다.

간단하게 코드 설명을 한다면, Composable Scope 상단에

var selectedPosition by remember { mutableStateOf(-1) }

이 선언되어 있는 상태에서 각 아이템의 checkBox마다 선택 시, 선택 index를 담아두는 기능을 달아둡니다.
이후 선택을 표시해야할 경우, selectedPosition == index 인 경우 이므로 위의 코드 처럼 표현을 해준다면, 간단하게 singleSelection을 구현할 수 있습니다.

또한 기존의 리스트를 Flow로 받든, List 형태로 받던, selectedPosition 변수가 선택 index를 가지고 있기 때문에, 리스트 원소 접근에도 문제가 없습니다.

Question

저의 경우 저 selectedPosition 데이터를 Composable이 가져도 된다고 생각합니다. ViewModel에 있는 것보다 말입니다.
ViewModel이 보관해야할 Business Data가 아닌 Ui Data에 가까워서 저는 이렇게 생각하긴 하는데, 다른 분들은 어떻게 생각하는지 댓글 남겨주시면 감사하겠습니다.

물론 반박도 좋습니다!!! 감사합니다.👍

profile
안녕하세요 송훈기입니다.

0개의 댓글