Android Application

Kotlin 뷰 바인딩(View Binding)

작성자 임베디드코리아 작성일23-09-24 03:58 조회1,579회 댓글0건

첨부파일

■ 파인드 뷰(findViewByld)
- 안드로이드 리소스를 관리하는 R 클래스를 통해 View를 찾는다.
-  자동으로 형변환을 해주는 기능이 없어서 직접 형변환을 해주어야한다.
- 연결된 Layout에 존재하지 않은 View여도 앱을 실행하기 전까지 오류를 발생시킨다.
- 안드로이드 초기부터 사용되었으며 별다른 설정없이 사용 가능하다.

■ 데이터 바인딩(DataBinding)
- XML 파일과 데이터를 직접 결합하는 방법이다.
- 디자인 패턴과 결합해서 사용한다.

------------------------------------------------------------------------------------
      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">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.180"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.109" />

    <TextView
        android:id="@+id/phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="phone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.180"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.206" />

    <TextView
        android:id="@+id/address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Address"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.180"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.327" />

</androidx.constraintlayout.widget.ConstraintLayout>

------------------------------------------------------------------------------------
    MainActivity.kt
------------------------------------------------------------------------------------
private lateinit var binding: ActivityMainBinding

class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //setContentView(R.layout.activity_main)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.name.text = "고소미"
        binding.phone.text = "010-5554-1234"
        binding.address.text = "사랑시 고백로 9090"

    }
}

------------------------------------------------------------------------------------
    build.gradle(Module) : build.gradle.kts
-------------------------------------------------------------------------------------
/ 안드로이드 스튜디오 4.0 이상
android {
    ...
    buildFeatures {
        viewBinding = true
    }
}