이 기술은 deprecated 예정이다. 따라서 쓰지말자.
https://full-stack.tistory.com/13
이걸 쓰자
그래도 쓰고 싶을 수도 있는 이상한 사람들을 위해 글은 지우지 않겠다.
코틀린 합성 프로퍼티
코틀린 확장 플러그인에서 제공하는 매우 간단하게 쓸 수 있고,
리팩토링 효과가 탁월한 기능을 소개하고자 한다.
XML의 id 값을 Kotlin 코드 내에서 프로퍼티 이름으로 사용할 수 있게 한다. 즉 findViewById를 쓸 필요없다.
예제는 간단히 백(Back)버튼으로 액티비티를 종료하는 예시로 들겠다.
준비
우선 App 수준 build.gradle 파일에서 플러그인에 'kotlin-android-extensions' 추가.
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
xml 파일에는 이미지뷰 id 에 bt_back 이라는 값을 부여했다.
<ImageView
android:id="@+id/bt_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginStart="15dp"
해당 xml 파일을 inflate 하는 액티비티 코틀린 파일에 다음과 같이 import 한다.
import kotlinx.android.synthetic.main.{xml 파일명}.*
import kotlinx.android.synthetic.main.activity_blescan.*
백버튼 구현 비교
기존 Java 방식 : 지저분
private ImageView bt_back;
...(중략)
bt_back = (ImageView)findViewById(R.id.bt_back);
bt_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Fancy 한 Java - 람다 이용
private ImageView bt_back;
.. (중략)
bt_back = (ImageView)findViewById(R.id.bt_back);
bt_back.setOnClickListener(v -> finish());
기존 Kotlin
private val bt_back by lazy{
findViewById<ImageView>(R.id.bt_back)
}
.. (중략)
bt_back.setOnClickListener { finish() }
Kotlin 확장 프로퍼티 : 단 한줄로 끝
bt_back.setOnClickListener { finish() }
비슷한 기술로 Java 에선 Butter Knife 라는 라이브러리가 있기도하다. 하지만 Java 자체가 Fancy 하지 않다.
'Mobile : Android > Android Studio' 카테고리의 다른 글
[Android] 안드로이드 CI/CD # 1 : Bitrise + Firebase (0) | 2022.07.24 |
---|---|
[Android Studio] ADB(Android Debug Bridge) 설치 (0) | 2022.06.02 |
[Kotlin Plugin] JsonToKotlinClass (0) | 2021.09.08 |
댓글