[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
속성을 변경하면 해당 변경 내용이 텍스트뷰에 반영됩니다. 데이터 바인딩을 사용하여 동적으로 데이터를 설정하는 방법을 살펴보았습니다.