본문 바로가기
ⓢⓣⓤⓓⓨ/ⓐⓝⓓⓡⓞⓘⓓⓢⓣⓤⓓⓘⓞ

[Kotlin] 뷰바인딩 (코틀린 시작 전 알아야 할 점)

by heaven00 2021. 8. 22.
728x90

 

 

 

원래 나는 안드로이드 개발을 자바로만 해왔다

모바일앱프로그램을 자바로 배우기도했고,,,

 

근데 이제 추세가 코틀린으로 기울고 있는 것 같고 코틀린의 장점을 점점 알게 되어서 공부를 시작했다

 

 

 

혹시라도 코틀린 공부를 시작하는 사람이 있다면

강의나 책을 사서 공부할 때 무조건 최근꺼 사서 하세요.

 

내가 저거만 알았으면 진짜 5일은 아꼈을텐데

 

아마 또 코틀린이 나온지 별로 지나지 않아서 아마 코딩을 배우기도 쉽지 않을 것이다

지금 내가 딱 그렇다. 솔직히 정말 짜증나지만 ^^ 열심히 해보려고한다

 

 

 

 

 


 

 

 

 

 

원래 코틀린에서는 findViewById를 대신할 수 있는 '익스텐션'을 제공했다

여기서 findViewById는 레이아웃 XML파일에 정의된 View에 접근하는 방법이다.

그런데 코틀린은 findViewById함수를 사용하지 않고도 xml에 작성한 것들을 알아서 찾아올 수 있는 기능이 있었다

 

하지만 Android for Developers 사이트를 참고한 결과,

 

안드로이드 코틀린 익스텐션은 오늘 출시된 코틀린 4.1.2 을 시점으로 폐기(deprecated) 처리되며, 2021년 9월 즈음에는 코틀린 릴리즈에서 완전히 제거될 예정이라고 한다.

 

 

 

즉, 코틀린 개발을 더 멀리 보는 사람은 익스텐션을 사용하면 안될 것 같다는 결론에 이르렀다

 

 

 

그래서 익스텐션을 대체하는 것이 '뷰 바인딩'이다.

코틀린 환경의 안드로이드에서 뷰에 접근하는 새로운 방식이라고 생각해주면 된다.

 

 

 

 

 

뷰 바인딩 적용 방법 (안드로이드스튜디오 4.1 기준)

 

1. 아래에 표시한 build.gradle에 들어간다

 

 

 

2. 아래에 작성한 곳에buildFeatures { viewBinding true } 추가 후 sync now 를 누른다

 

 

 

 

그럼 기본 설정은 완료!

 

 

 

 

 

 

뷰 바인딩 테스트

 

 

1. activity_main 에서  TextView에 아이디 설정해주기

 

android:id="@+id/test" 

참고로 난 저렇게 설정했다

 

<?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/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

 

 

 

 

2. MainActivity에 아래와 같이 코드 추가

 

package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    //바인딩 객체 선언
    private var mBinding: ActivityMainBinding ?= null
    private val binding get() = mBinding!!

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //setContentView(R.layout.activity_main)  --> 기존 setContenView 삭제

        //바인딩 초기화
        mBinding = ActivityMainBinding.inflate(layoutInflater)

        // 생성된 뷰 액티비티에 표시시
       setContentView(binding.root)

        //뷰 바인딩으로 접근 => 뷰 id 접근 가능
        binding.test.setText("안녕하세요")
    }
}

 

 

 

 

 

3. 실행

 

결과를 보면,  처음에는 xml에서 확인했을 때는 Hello World 였지만

새로 설정해준 결과, 안녕하세요로 뜬다!

 

 

 

 

 


 

 

 

여러가지 사이트를 돌고돌아 알아낸 것들을 정리했다

개인적으로 '홍로이드'님을 추천합니다...!

 

 

 

 

728x90

댓글