[kotlin] 코틀린 데이터 바인딩을 사용하여 텍스트뷰에 동적으로 데이터를 설정하는 방법

1. 데이터 바인딩 레이아웃 설정하기

우선, 데이터 바인딩이 적용된 레이아웃 파일을 작성합니다. TextView에 동적으로 데이터를 설정하기 위해 다음과 같이 레이아웃 파일을 작성합니다.

<!-- activity_main.xml -->
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable
           name="viewModel"
           type="com.example.ViewModel" />
   </data>
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">

       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{viewModel.dynamicText}" />
   </LinearLayout>
</layout>

2. ViewModel에서 데이터 설정하기

데이터를 설정할 ViewModel 클래스를 다음과 같이 작성합니다.

// ViewModel.kt
import androidx.databinding.BaseObservable
import androidx.databinding.Bindable

class ViewModel : BaseObservable() {
   @get:Bindable
   var dynamicText: String = ""
       set(value) {
           field = value
           notifyPropertyChanged(BR.dynamicText)
       }
}

3. 액티비티에서 데이터 설정하기

마지막으로, 액티비티에서 데이터를 설정합니다.

// MainActivity.kt
import androidx.databinding.DataBindingUtil
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
       val viewModel = ViewModel()
       viewModel.dynamicText = "동적으로 설정된 데이터"
       binding.viewModel = viewModel
   }
}

이제, ViewModel 클래스의 dynamicText 속성을 변경하면 해당 변경 내용이 텍스트뷰에 반영됩니다. 데이터 바인딩을 사용하여 동적으로 데이터를 설정하는 방법을 살펴보았습니다.