#1 View Binding
#1-1 ๊ฐ์
๋ทฐ ๊ฒฐํฉ | Android Developers
์ด ํ์ด์ง๋ Cloud Translation API๋ฅผ ํตํด ๋ฒ์ญ๋์์ต๋๋ค. ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ๋ทฐ ๊ฒฐํฉ์ ๋ทฐ์ ์ํธ์์ฉํ๋ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ
developer.android.com
๋ทฐ ๋ฐ์ธ๋ฉ์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋ถ๋ถ์งํฉ์ผ๋ก, XML์์ @{ ... } ๋ฐ @={ ... }๊ฐ ์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ฆ, View Binding์ findViewById์ ์์์ ์ ์ธ๋ง์ ์ํํ๋ ์์ ์ด๋ค.
#1-2 View Binding์ ์ฅ์
1. ํ๋ก์ ํธ ์ปดํ์ผ ์๊ฐ์ด ์งง์
2. xml ์ฝ๋๋ฅผ <layout> ํ๊ทธ๋ก ๊ฐ์ ํ์๊ฐ ์์ (= Bindingํ View(XML ์ฝ๋)๋ฅผ ์ผ์ ๊ฑด๋ค์ง ์์๋ ๋จ)
๋ฐ๋ผ์, @{ ... } ๋ฐ @={ ... }์ด ์ฐ์ด์ง ์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ฝ๋๋ผ๋ฉด, Data Binding์ View Binding์ผ๋ก ์ ํํ ์ ์๋ค.
#2 View Binding ์ฌ์ฉํ๊ธฐ
#2-1 View Binding์ ์ ์ฉํ ์ํ ์ฑ
[Android] Data Binding - ๊ธฐ์ด
#1 ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ฌ์ฉ ์ #1-1 ์์ ์ฑ ์๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ฑ์ด ์๋ค. Button์ ๋๋ฅด๋ฉด, EditText์ text๊ฐ ๋ฐ๋ก ์์ ์๋ TextView์ text์ ๋์ ๋๋ค. ์ด ์ฑ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. #1-2 activity_main.xml #1-3 Main
kenel.tistory.com
Data Binding์ด ์ฐ์ธ ์ ๊ฒ์๊ธ์ ํ๋ก์ ํธ๋ฅผ View Binding์ผ๋ก ์ ํํด๋ณด๊ฒ ๋ค.
#2-2 build.gradle.kts (๋ชจ๋ ์์ค) ์์
plugins {
...
}
android {
...
buildFeatures {
viewBinding = true
}
}
dependencies {
...
}
dataBinding = true ๊ตฌ๋ฌธ์ ์ ๊ฑฐํ๊ณ , ๋์ viewBinding = true๋ฅผ ์ถ๊ฐํ๋ค.
#2-3 activity_main.xml ์์
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
...
</androidx.constraintlayout.widget.ConstraintLayout>
<layout> ํ๊ทธ๋ฅผ ์ ๊ฑฐํ๋ค.
#2-4 MainActivity.kt ์์
// package com.example.viewbindingbasics
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.viewbindingbasics.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.apply {
myButton.setOnClickListener {
myTextView.text = myEditText.text
}
}
}
}
DataBindingUtil์ ์ด์ฉํ๋ ๋์ ActivityMainBinding.inflate()๋ก View๋ฅผ ๊ตฌ์ฑํ๋ค.
#3 ์๋ ํ์ธ

#4 ์์ฝ
View Binding์ @{ ... } ๋ฐ @={ ... }์ด ์๋ Data Binding์ด๋ค.
#5 ์์ฑ๋ ์ฑ
android-practice/data-binding/ViewBindingBasics at master ยท Kanmanemone/android-practice
Contribute to Kanmanemone/android-practice development by creating an account on GitHub.
github.com
'๊นจ์ ๊ฐ๋ ๐ > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] Jetpack Compose - ๊ธฐ์ด (0) | 2024.07.22 |
---|---|
[Android] Dagger2 - Hilt๋ก ๋ง์ด๊ทธ๋ ์ด์ (0) | 2024.07.12 |
[Android] Unit Testing - Retrofit (0) | 2024.07.08 |
[Android] Unit Testing - Room๊ณผ LiveData (1) | 2024.07.08 |
[Android] Unit Testing - ViewModel (0) | 2024.07.08 |