[kotlin] 코틀린 데이터 바인딩을 사용하여 타이머를 구현하는 방법

코틀린 데이터 바인딩은 안드로이드 앱에서 UI와 비즈니스 로직을 쉽게 연결할 수 있도록 도와주는 라이브러리입니다. 이를 활용하여 타이머를 구현하는 방법에 대해 알아보겠습니다.

1. 데이터 바인딩 설정

먼저, 앱 모듈의 build.gradle 파일에 다음과 같이 데이터 바인딩을 활성화해줍니다.

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

그리고 XML 레이아웃 파일의 최상위 레이아웃 태그에 다음과 같이 데이터 바인딩 레이아웃 태그를 추가합니다.

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="viewModel"
            type="com.example.TimerViewModel" />
    </data>

    <!-- Your layout content here -->

</layout>

2. 타이머 뷰 모델 작성

다음으로, 타이머 뷰 모델 클래스를 작성합니다.

class TimerViewModel : ViewModel() {
    private val _currentTime = MutableLiveData<Long>()
    val currentTime: LiveData<Long>
        get() = _currentTime

    private var timer: CountDownTimer? = null

    fun startTimer(duration: Long) {
        timer = object : CountDownTimer(duration, 1000) {
            override fun onTick(millisUntilFinished: Long) {
                _currentTime.value = millisUntilFinished / 1000
            }

            override fun onFinish() {
                // 타이머 종료 처리
            }
        }
        timer?.start()
    }

    fun stopTimer() {
        timer?.cancel()
    }
}

3. XML 레이아웃에서 데이터 바인딩 적용

이제 XML 레이아웃 파일에서 데이터 바인딩을 적용하여 타이머를 표시합니다.

<TextView
    android:text="@{viewModel.currentTime.toString()}"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

4. 액티비티 또는 프래그먼트에서 데이터 바인딩 초기화

마지막으로, 액티비티 또는 프래그먼트에서 데이터 바인딩을 초기화하고 타이머 뷰 모델과 연결합니다.

val binding: YourLayoutBinding = DataBindingUtil.setContentView(this, R.layout.your_layout)
val viewModel = TimerViewModel()
binding.viewModel = viewModel

이제 코틀린 데이터 바인딩을 사용하여 간단하게 타이머를 구현할 수 있습니다.

참고 자료: 안드로이드 공식 문서 - 데이터 바인딩

제안 및 본문 수정은 코트린 플레이그라운드를 참조하여 작성되었습니다.