티스토리 뷰

Android App Coding

뷰 바인딩/뷰 결합 View Binding

IT Knowledge Share 2021. 8. 7. 02:26
반응형

findViewById를 매번 사용하여 뷰를 가져오는 경우, 뷰가 여러 개인 경우 관리 포인트가 많아지고 코드가 복잡해질 수 있습니다. 뷰 바인딩은 여러 뷰 객체들을 관리하고, 쉽게 가져올 수 있도록 도와주는 역할을 합니다. XML 레이아웃 파일에 정의된 뷰들을 바로 가져와 쓸 수 있어 매우 편리합니다.

 

기본적인 사용 방법은 우선, build.gradle의 모듈 단위에 아래와 같이 코드를 추가합니다.

android {
        viewBinding {
            enabled = true
        }
}

 

뷰 바인딩 사용 방법을 요약하자면 아래와 같습니다. 우선 setContentView(R.layout.activity_main) 처럼 설정된 부분을 뷰 결합을 통해서 바꿔줘야 합니다. 이렇게 함으로써, xml 객체를 binding에 담아서 코드로 쉽게 접근할 수 있도록 도와줍니다. 그리고 binding.root 부분 처럼, xml 객체가 담겨진 binding이 view에 담겨져, setContentView(view)를 통해 표현됩니다.

* 뷰 바인딩/뷰 결합

private lateinit var binding: ResultProfileBinding

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ResultProfileBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
}
반응형
* 기본 onCreate 메소드의 setContentView

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

 

이렇게 결합이 이루어지면, 레이아웃 xml의 여러 뷰 객체를 쉽게 접근해서 사용이 가능합니다. 아래의 LinearLayout에는 텍스트뷰, 이미지뷰, 버튼 뷰가 하위 뷰로 존재하는 것을 볼 수 있습니다.

 

<LinearLayout>
        <TextView android:id="@+id/name" />
        <ImageView android:cropToPadding="true" />
        <Button android:id="@+id/button" />
</LinearLayout>

뷰 바인딩이 완성 후, 아래의 코드처럼 id를 이용해 쉽게 접근이 가능합니다. 매번 findViewById를 사용할 수고가 줄어들게 되는 것입니다.

binding.name.text = viewModel.name
binding.button.setOnClickListener { }

 

더욱 자세한 내용은 공식 문서를 참조하시기 바랍니다.

https://developer.android.com/topic/libraries/view-binding

 

뷰 결합  |  Android 개발자  |  Android Developers

뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 클래스의

developer.android.com

 

 

반응형
댓글