요술고양이의 Digital Life

안드로이드에서는 UI 작업 시간이 너무 많이 걸립니다.

XML로 레이아웃 구성하는 데 시간도 많이 걸리지만 해당 위젯을 사용하려면 findViewById로 지정해서 사용해야 합니다.


하지만 Kotlin Extension은 레이아웃 XML에서 사용한 이름 그대로 액티비티 내에서 사용할 수 있습니다.

우선 아래 그림과 같이 액티비티의 레이아웃에서 Hello World를 출력하고 있는 TextView의 id를 ui_text_hello 라고 정하겠습니다.




만약 Hello World 대신 "Kotlin Example" 을 출력하려면 기존 방법으로는 아래와 같이 해야합니다.


class MainActivity : AppCompatActivity() {

lateinit var mTextHello: TextView

public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mTextHello = findViewById(R.id.ui_text_hello) as TextView
mTextHello.text = "Kotlin Example"

}
}



하지만 지난 포스트에서 Kotlin Extension을 설치하셨다면 별도로 findViewById 없이 XML에서 선언한 이름 그대로 바로 접근할 수 있습니다.


class MainActivity : AppCompatActivity() {

public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

ui_text_hello.text = "Kotlin Example"

}
}


대신 아래와 같이 layout 이름의 형태로 import가 됩니다.


import kotlinx.android.synthetic.main.activity_main.*


import에서 한줄이 추가되긴 했지만 TextView에 새로운 문자열 출력을 위한 세 줄짜리 코드가 한 줄로 줄어들었습니다.


그리고 실제로 개발 시에는 xml 레이아웃에 포함된 위젯은 한두개가 아니므로 전체적으로 코드를 줄이는데 큰 도움을 줍니다.

그리고 XML에서 지정한 이름을 그대로 사용하기 때문에 UI 레이아웃과 멤버 변수로 지정한 이름이 달라 헷갈리는 부분을 줄일 수가 있습니다.

Comment +0