[안드로이드 프로그래밍] View Binding

PUJIN·2023년 6월 7일
0

android programming

목록 보기
2/26
post-thumbnail

View Binding


res / layout 폴더의 xml 파일별 하나의 클래스 생성

xml 파일의 View를 관리할 수 있는 기능 구현

  • ID가 있는 UI 요소의 변수 & 객체 자동 생성




1. app 수준의 gradle 파일에 추가 - build.gradle(Module:app)

android {
  viewBinding {
      enabled = true
  }
}
  1. 생성된 ViewBinding 객체에는 View의 ID와 동일한 이름의 변수(View 객체) 생성
lateinit var activityMainBinding: ActivityMainBinding
  1. Viewbinding 객체가 관리하는 View 중 화면에 나타날 최상위 View를 지정
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
  • layoutInflater : XML 파일을 통해 객체를 생성하는 도구
  1. ViewBinding 사용
  • overriding할 method가 1개인 경우 : 고차함수 이용 가능
  • overriding할 method가 2개 이상인 경우 : 고차함수 이용 불가능, 객체를 매개변수로 전달하는 함수 사용

4-1. 고차함수 사용

class MainActivity : AppCompatActivity() {

  lateinit var activityMainBinding: ActivityMainBinding

  override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
          setContentView(activityMainBinding.root)
          
		  activityMainBinding.button.setOnClickListener { 
           		activityMainBinding.text.text = ""
           }
  }
}

4-2. 객체를 매개변수로 전달하는 함수 사용


val buttonClickListener = ButtonClickListener()

activityMainBinding.button.setOnClickListener(buttonClickListener)


inner class ButtonClickListener : OnClickListener {
        override fun onClick(v: View?) {
			activityMainBinding.text.text = ""
        }
}

4-3. 범위 지정 함수 (run)

activityMainBinding.run {
	button.run {
		setOnClickListener {
			activityMainBinding.text.text = ""
		}
	}
    button2.run {
      setOnClickListener {
              activityMainBinding.text.text = ""
      }
    }
}

0개의 댓글