원래 나는 안드로이드 개발을 자바로만 해왔다
모바일앱프로그램을 자바로 배우기도했고,,,
근데 이제 추세가 코틀린으로 기울고 있는 것 같고 코틀린의 장점을 점점 알게 되어서 공부를 시작했다
혹시라도 코틀린 공부를 시작하는 사람이 있다면
강의나 책을 사서 공부할 때 무조건 최근꺼 사서 하세요.
내가 저거만 알았으면 진짜 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 였지만
새로 설정해준 결과, 안녕하세요로 뜬다!
여러가지 사이트를 돌고돌아 알아낸 것들을 정리했다
개인적으로 '홍로이드'님을 추천합니다...!
'ⓢⓣⓤⓓⓨ > ⓐⓝⓓⓡⓞⓘⓓⓢⓣⓤⓓⓘⓞ' 카테고리의 다른 글
[Kotlin] 리사이클러 뷰 (RecyclerView) (0) | 2021.08.25 |
---|---|
[Kotlin] 네비게이션 뷰 (Navigation View) (0) | 2021.08.24 |
[Kotlin] 리스트 뷰 (ListView) (0) | 2021.08.23 |
[Kotlin] 화면이동 intent (0) | 2021.08.23 |
Unresolved reference 오류 (0) | 2021.08.18 |
댓글