안드로이드에선 view들을 참조하고 사용하기 위해서 findViewById(R.id.(view이름)) 을 사용해 view를 참조하고 layout을 inflate 해왔다.
View binding을 사용하면 이 과정을 대체할 수 있다.
먼저 build.gradle에 다음의 코드를 추가한다.
android {
...
buildFeatures {
viewBinding = true;
}
}
먼저 Binding Class 객체를 선언한다.
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
Binding Class의 이름은 Activity의 이름에 따라 달라진다.
여기선 MainActivity 에서 사용하기 때문에 ActivityMainBinding 이 되었다.
그 후 onCreate 메소드 안에서 binding 객체를 만들어준다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
이 binding 객체를 이용해 layout과 view들을 참조할 수 있다.
binding.(view이름) 으로 해당 view를 참조하여 사용할 수 있다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
binding.textView.setText("Binding Test");
}
});
}


먼저 Binding Class 객체를 선언한다.
public class BindingFragment extends Fragment {
private FragmentBindingBinding binding;
Binding Class의 이름은 Fragment의 이름에 따라 달라진다.
여기선 BindingFragment 에서 사용하기 때문에 FragmentBindingBinding 이 되었다.
그 후 onCreateView 메소드 안에서 binding 객체를 만들어준다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentBindingBinding.inflate(inflater, container, false);
이 binding 객체를 이용해 layout과 view들을 참조할 수 있다.
binding.(view이름) 으로 해당 view를 참조하여 사용할 수 있다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentBindingBinding.inflate(inflater, container, false);
View rootView = binding.getRoot();
binding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
binding.textView.setText("Fragment View Binding");
}
});
return rootView;
}
그 후 onDestroyView 메소드에서 Binding Class 객체를 없에는 코드를 넣어
뷰가 제거될 때 Binding Class 객체를 정리해준다.
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}

