Android

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding) ์‹œ์ž‘ํ•˜๊ธฐ

๋…ธ๋ฃจ๋ฃฝ 2021. 6. 5. 19:00

Data Binding

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding)์„ ์จ์•ผํ•˜๋Š” ์ด์œ 

์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ดˆ๊ธฐ์—๋Š” findViewById()๋ฅผ ๋งŽ์ด ์“ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ findViewById()๋Š” runtime์‹œ ๋ทฐ์˜ ๊ณ„์ธต์„ ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ๋น„ํšจ์œจ์ ์ธ ํ•จ์ˆ˜์ด๋‹ค.

๊ฐ„๋‹จํ•œ ์•ฑ์—์„œ๋Š” ์ƒ๊ด€์—†์ง€๋งŒ, ์•ฑ์ด ์ปค์ง€๋ฉด ํšจ์œจ์ด ๋–จ์–ด์ง„๋‹คใ…œใ…œ

 

Data Binding์€ ๊ฐ ๋ ˆ์ด์•„์›ƒ xml๋งˆ๋‹ค binding class๋ฅผ ๋งŒ๋“ ๋‹ค.
(activity_main ⇒ ActivityMainBinding)

๊ทธ๋ž˜์„œ binding class๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ทฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์„œ, ์ฝ”๋“œ๋„ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค.

๋˜ํ•œ, ์š”์ฆ˜ ๋งŽ์ด ์“ฐ๋Š” MVVM ์•„ํ‚คํ…์ณ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding)์˜ ์žฅ์ 

  1. findViewById()์˜ ๋น„ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•จ ⇒ ์•ฑ์˜ Performance ์ƒ์Šน
  2. ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง ⇒ ๊ฐ€๋…์„ฑ๐Ÿ‘, ์œ ์ง€๋ณด์ˆ˜ ์‰ฌ์›Œ์ง
  3. binding๋œ ๋ณ€์ˆ˜๋“ค์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•ด์คŒ
  4. compile์‹œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, error๋ฅผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    (runtime์‹œ ์—๋Ÿฌ๋ฅผ ๋งž๋‹ฅ๋œฐ์ผ ์ผ์ด ์—†์Œ..)
  5. MVVM ์•„ํ‚คํ…์ณ์˜ ViewModel๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

 

์‚ฌ์šฉ๋ฐฉ๋ฒ•

1. build.gradle ํŒŒ์ผ์— kotlin-kapt, dataBinding ์š”์†Œ ์ถ”๊ฐ€

plugins {
...
    id 'kotlin-kapt'
}

android {
...
    buildFeatures{
        dataBinding = true
    }
...
}

2. xml ์ˆ˜์ •

• ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์˜ ๋ฃจํŠธ ํƒœ๊ทธ์— <layout> ์ถ”๊ฐ€
• ์ถ”ํ›„ <data> ํƒœ๊ทธ ์ถ”๊ฐ€๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

3. ์•กํ‹ฐ๋น„ํ‹ฐ์— ์„ธํŒ…

์•กํ‹ฐ๋น„ํ‹ฐ ์„ธํŒ… ์ „, Build → Rebuild Project
(๊ทผ๋ฐ, ๊นœ๋นกํ•˜๊ณ  ์•ˆํ–ˆ๋Š”๋ฐ๋„ ์ž˜ ์‹คํ–‰๋˜๊ธด ํ–ˆ๋‹ค.)

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.button.setOnClickListener {
            ...
        }
    }
}

Activity์—๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ”์ธ๋”ฉ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!
๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์„œ ๋!