개요
체크박스, 토글(ToggleButton), 스위치(Switch)는 모두 사용자 인터페이스에서 상태를 나타내거나 설정할 때 사용하는 UI 요소들로, 선택 여부에 따라 다른 동작을 할 수 있습니다. 이들은 모두 setOnCheckedChangeListener
를 사용하여 상태 변화를 감지하고, 그에 따라 원하는 동작을 실행하는 방식이 동일합니다.
체크박스 예제 코드
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplication.databinding.ActivityMainBinding // View Binding을 위한 import
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) // View Binding 초기화
setContentView(binding.root)
// 체크박스에 체크 변경 리스너 설정
binding.appleCheckBox.setOnCheckedChangeListener { checkBox, isChecked ->
updateSelectedFruits()
}
binding.bananaCheckBox.setOnCheckedChangeListener { checkBox, isChecked ->
updateSelectedFruits()
}
binding.orangeCheckBox.setOnCheckedChangeListener { checkBox, isChecked ->
updateSelectedFruits()
}
}
private fun updateSelectedFruits() {
val selectedFruits = mutableListOf<String>()
// 각 체크박스의 선택 상태를 확인하여 선택된 과일을 리스트에 추가합니다.
if (binding.appleCheckBox.isChecked) {
selectedFruits.add("Apple")
}
if (binding.bananaCheckBox.isChecked) {
selectedFruits.add("Banana")
}
if (binding.orangeCheckBox.isChecked) {
selectedFruits.add("Orange")
}
// 선택된 과일을 TextView에 표시합니다.
binding.selectedFruitsTextView.text = "선택한 과일: ${selectedFruits.joinToString(", ")}"
}
}
설명
ActivityMainBinding
: View Binding을 통해 생성된 클래스입니다. XML 레이아웃 파일의 ID를 사용하여 UI 요소에 쉽게 접근할 수 있게 해줍니다.setOnCheckedChangeListener
: 체크박스의 체크 상태가 변경될 때 호출되는 리스너를 추가합니다. 이 메서드의 매개변수로는 두 개의 값이 있습니다:checkBox
: 체크 상태가 변경된 체크박스입니다. 이 값을 통해 어떤 체크박스가 변경되었는지 알 수 있습니다.isChecked
: 체크박스의 현재 체크 상태입니다.true
이면 체크되어 있고,false
이면 체크되지 않은 상태입니다.
updateSelectedFruits
: 선택된 체크박스의 상태를 확인하여 선택된 과일 목록을 업데이트하는 메서드입니다. 각 체크박스의 체크 상태를 확인하고, 선택된 과일을 리스트에 추가한 후, 최종적으로 선택된 과일을TextView
에 표시합니다.
토글 예제 코드
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplication.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// ToggleButton에 체크 변경 리스너 설정
binding.toggleButton.setOnCheckedChangeListener { toggleButton, isChecked ->
if (isChecked) {
binding.toggleButton.textOn = "켜짐"
binding.statusTextView.text = "Toggle ON"
} else {
binding.toggleButton.textOff = "꺼짐"
binding.statusTextView.text = "Toggle OFF"
}
}
}
}
설명
- ToggleButton: 켜짐/꺼짐 상태를 가질 수 있는 버튼.
isChecked
값에 따라 상태를 확인할 수 있습니다. textOn, textOff
: 버튼 내부의 텍스트를 지정합니다.- setOnCheckedChangeListener:
ToggleButton
의 상태가 변경될 때 호출되는 리스너.isChecked
값이true
면 ON,false
면 OFF 상태를 나타냅니다.
스위치 예제 코드
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplication.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Switch에 체크 변경 리스너 설정
binding.switchButton.setOnCheckedChangeListener { switchButton, isChecked ->
if (isChecked) {
binding.statusTextView.text = "Switch ON"
} else {
binding.statusTextView.text = "Switch OFF"
}
}
}
}
설명
- Switch: 슬라이딩 형식의 스위치로 ON/OFF 상태를 나타냅니다.
- setOnCheckedChangeListener: 스위치 상태가 변경될 때 호출되는 리스너로,
isChecked
값에 따라 ON/OFF 상태를 처리할 수 있습니다.