쨍쨍
[Android Studio] 뷰 바인딩(View Binding) 본문
뷰 바인딩(View Binding)
쉽게 말해 findViewById를 통해 하나하나 뷰를 찾지 않고, 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다.
findViewById
findViewById를 사용하면 되는데 굳이 ViewBinding을 사용해야할까?
뷰 바인딩을 사용하지 않았을 때는 findViewById를 사용해 레이아웃에서 생성한 위젯(버튼, 텍스트 등)을 메인코드에서 하나하나 findViewById()을 사용해 선언해줘야한다.
위 사진에서는 findViewById로 선언해줘도 복잡하지 않은데 findViewById를 써도 되지 않을까? 라고 생각할 수 있지만 지금은 위젯이 3개이기 때문에 findViewById로 선언해줘도 코드가 길어지고 복잡해지지 않는 것이다. 만약, 위젯이 100개라면? 혹은 그 이상이라면? 코드는 더욱 더 길어질 것이다.
findViewById()을 사용할 때의 문제점은 크게 3가지이다.
① 코드가 더러워진다. (길어지고 복잡해진다.)
② 없는 id를 사용하면 NULL 오류가 발생한다.
③ 실수로 뷰의 타입을 잘못 적으면 오류가 발생한다.
뷰 바인딩(View Binding) 사용방법
!)
Gradle Scripts → build.gradle (Module:app)에 들어가서 android {} 코드 안에 아래 코드를 입력한다.
buildFeatures {
viewBinding = true
}
2)
MainActivity.java 코드에 아래 코드를 입력한다.
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
// 뷰 바인딩을 사용하여 activity_main.xml 레이아웃 파일과 액티비티를 연결하는 역할
setContentView(binding.getRoot());
// 액티비티의 컨텐트 뷰로 binding 객체의 루트 뷰를 설정
// 뷰 바인딩을 통해 레이아웃의 모든 View 요소에 접근 가능
binding.hello.setText("ViewBinding");
// binding 객체의 hello TextView에 "ViewBinding" 문자열을 설정
// 뷰 바인딩을 통해 TextView에 직접 접근하여 텍스트를 변경하는 예시
}
}
코드 부가설명
.inflate
inflate() 메서드는 XML 레이아웃 파일을 사용하여 뷰 객체를 생성하는 역할을 한다.
LayoutInflater 클래스의 인스턴스를 사용하여 레이아웃 파일을 파싱하고, 그 결과로 뷰 객체를 생성한다.
주로 해당 레이아웃을 화면에 표시하기 위해 뷰 계층 구조를 구성하는 역할을 한다.
LayoutInflater
XML 레이아웃 파일을 실제 뷰 객체로 인스턴스화하는 역할을 한다. XML 레이아웃을 뷰 객체로 인스턴스화하면, 해당 뷰 객체를 프로그래밍적으로 조작하고 화면에 추가할 수 있다. 이를 통해 동적인 UI 생성이 가능하며, 유연하고 다양한 UI 구성이 가능해진다.
getLayoutInflater()
LayoutInflater 인스턴스를 반환한다.
주로 액티비티나 컨텍스트에서 XML 레이아웃을 인플레이션하여 동적인 UI 구성에 활용됩니다.
setContentView()
현재 액티비티의 컨텐트 뷰를 설정하는 역할을 한다.
setContentView() 메서드를 통해 액티비티의 레이아웃을 지정하고 화면에 그려질 내용을 설정한다.
뷰 바인딩(View Binding)의 xml 객체 이름
레이아웃의 이름에서 언더바(_)를 제거하고, 단어의 앞글자를 대문자로 바꾼다.
activity_main | → | ActivityMainBinding |
haha_hoho | → | HahaHohoBinding |
a__bc_d | → | ABcDBinding |
'프로그래밍 코드 > Android Studio' 카테고리의 다른 글
#2. AI Smart Home_RegisterActivity (0) | 2024.03.13 |
---|---|
#1. AI Smart Home_LoginActivity (0) | 2024.03.13 |
[Android Studio] 클릭 이벤트를 사용하는 4가지 방법 (0) | 2023.05.22 |
[Android Studio] 레이아웃 (0) | 2023.05.16 |
[Android Studio] 채팅 어플리케이션 (0) | 2023.05.15 |