Nuke Olaf - Log Store

[Android] 안드로이드 - 이용약관 동의 체크박스 알고리즘 만들기 본문

Android

[Android] 안드로이드 - 이용약관 동의 체크박스 알고리즘 만들기

NukeOlaf 2020. 3. 31. 23:03

현재 진행중인 프로젝트의 약관 동의 화면에서
모두 동의합니다를 누르면 전체 체크박스가 체크되고,
모두 동의에서 하나라도 체크가 해제되면 모두 동의합니다 체크박스가 해지되는 기능을 구현하려고 한다.

 

각 체크박스마다 클릭 리스너에 onCheckChanged() 함수를 호출하도록 했다.

onCheckChanged 는 어떤 버튼이 상태가 변경되었는지 확인하고, 상태 변화에 따라 체크박스 상태도 변경하는 함수이다.

class ActivityTermsAgree : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_terms_agree)

        allCheckBtn.setOnClickListener { onCheckChanged(allCheckBtn) }
        firstCheckBtn.setOnClickListener { onCheckChanged(firstCheckBtn) }
        secondCheckBtn.setOnClickListener { onCheckChanged(secondCheckBtn) }
        thirdCheckBtn.setOnClickListener { onCheckChanged(thirdCheckBtn) }
        fourthCheckBtn.setOnClickListener { onCheckChanged(fourthCheckBtn) }

    }

    private fun onCheckChanged(compoundButton: CompoundButton) {
        when(compoundButton.id) {
            R.id.allCheckBtn -> {
                if (allCheckBtn.isChecked) {
                    firstCheckBtn.isChecked = true
                    secondCheckBtn.isChecked = true
                    thirdCheckBtn.isChecked = true
                    fourthCheckBtn.isChecked = true
                }else {
                    firstCheckBtn.isChecked = false
                    secondCheckBtn.isChecked = false
                    thirdCheckBtn.isChecked = false
                    fourthCheckBtn.isChecked = false
                }
            }
            else -> {
                allCheckBtn.isChecked = (
                        firstCheckBtn.isChecked
                        && secondCheckBtn.isChecked
                        && thirdCheckBtn.isChecked
                        && fourthCheckBtn.isChecked)
            }
        }
    }
}
Comments