๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ํ์ด์ฌ
- ์๋ฐ๊ณต๋ถ
- ์น๋์๋ณด๋ ์ ์
- RESTful API
- ์๋ฐ
- JavaScript
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- Matplotlib ๊ธฐ์ด
- ํ๋ค์ค
- db
- Android
- ํ๋ค์ค๊ณต๋ถ
- ์๋๋ก์ด๋ ์คํ๋์ค
- MySQL
- Streamlit๊ธฐ์ด
- java
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์ด๋ณด
- ์๋ฐ๊ธฐ์ด
- ํ์ด์ฌ๊ณต๋ถ
- ์๋ฐ์คํฌ๋ฆฝํธ
- streamlit
- ์คํธ๋ฆผ๋ฆฟ
- Pandas
- serverless
- Streamlit๊ธฐ๋ณธ
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- ์น๋์๋ณด๋ ๊ธฐ์ด
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
Archives
- Today
- Total
ruriruriya
[Android Kotlin] ์๋๋ก์ด๋ ์ฝํ๋ฆฐ - ๋ทฐ ๋ฐ์ธ๋ฉ(View Binding) ๋ณธ๋ฌธ
๐คAndroid/Kotlin
[Android Kotlin] ์๋๋ก์ด๋ ์ฝํ๋ฆฐ - ๋ทฐ ๋ฐ์ธ๋ฉ(View Binding)
๋ฃจ๋ฆฌ์ผใ 2024. 10. 18. 16:05๋ฐ์ํ
๋ด๊ฐ ์๊ฐํ๋ ๋ทฐ๋ฐ์ธ๋ฉ์ ์ฅ์ ์
๋งค๋ฒ findViewById๋ฅผ ์ฐ์ง ์์๋ ๋๋ ์ ์ด๋ค.
๊ทธ ์ธ์ ์๋ชป๋ ID ์ ๊ทผ์ด๋ ํ๋ณํ ์ค๋ฅ๋ฅผ ์ปดํ์ผ ์์ ์์ ๋ฐ๊ฒฌํ ์ ์๊ณ , MVVMํจํด๊ณผ ์ ์ด์ธ๋ฆฌ๋ฉฐ XML์ ๋ฐ์ดํฐ์ ๋ก์ง์ ์ฐ๊ฒฐํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
1. build.gradle.kts(Module: app)
android {
...
dataBinding {
enable = true
}
}
์์ฑ ํ Sync Now
2. IntroActivity
layout ํ๊ทธ๋ก ์ ์ฒด ๊ฐ์ธ๊ธฐ
<layout>
<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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".auth.IntroActivity">
...
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
3. Activity์ ๋ทฐ๋ฐ์ธ๋ฉ ์์ฑ
class IntroActivity : AppCompatActivity() {
// 1. ๋ฐ์ธ๋ฉ ์์ฑ
// ActivityIntroBinding์ activity_intro.xml ํ์ผ๊ณผ ์ฐ๊ฒฐ๋ ์๋ ์์ฑ๋ ๋ฐ์ธ๋ฉ ํด๋์ค
// lateinit var๋ฅผ ์ฌ์ฉํด ๋์ค์ ๋ฐ์ธ๋ฉ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ ์ ์๋๋ก ์ค์
private lateinit var binding: ActivityIntroBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
// 2. DataBindingUtil๋ก ๋ ์ด์์์ ๋ฐ์ธ๋ฉ
// DataBindingUtil.setContentView๋ ๋ ์ด์์ ํ์ผ(activity_intro.xml)์ ์ธํ๋ ์ดํธํ๊ณ ,
// ํด๋น ๋ ์ด์์๊ณผ ์ฐ๊ฒฐ๋ ๋ฐ์ธ๋ฉ ๊ฐ์ฒด(ActivityIntroBinding)๋ฅผ ์์ฑ
// ์ด ๋ฐ์ธ๋ฉ ๊ฐ์ฒด๋ฅผ ํตํด XML์์ ์ ์ํ UI ์์์ ์ง์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
binding = DataBindingUtil.setContentView(this, R.layout.activity_intro)
// 3. UI ์์์ ์ ๊ทผํ์ฌ ํด๋ฆญ ๋ฆฌ์ค๋ ์ค์
// ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํตํด XML์ ์ ์๋ ๋ทฐ ์์๋ค์ ์ง์ ์ ๊ทผํ ์ ์.
// ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์ ์ LoginActivity๋ก ํ๋ฉด ์ ํ
binding.loginBtn.setOnClickListener {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}
// joinBtn ํด๋ฆญ ์ JoinActivity๋ก ํ๋ฉด ์ ํ
binding.joinBtn.setOnClickListener {
val intent = Intent(this, JoinActivity::class.java)
startActivity(intent)
}
}
}
๋ฐ์ํ