안드로이드 자바
[Java][Android] 데이터바인딩 활용 예시 만들기
teamnova
2025. 5. 2. 23:57
728x90
오늘은 데이터바인딩 라이브러리를 활용해 간단한 UI 정보 변경 예시를 만들어 보겠습니다.
안드로이드 데이터 바인딩 라이브러리는 XML UI 구성요소의 데이터를 선언적 형식을 사용해 소스코드 측 데이터와 결합하여 한쪽이 데이터 변경시 나머지 한쪽의 데이터를 자동 변경시키도록 동기화 시켜주는 기능을 제공하는 라이브러리 입니다.
그래들 설정
=> 모듈 수준의 build.gradle 파일 에서 android{ } 블록 내에 위 이미지와 같이 입력하여 databinding 기능을 활성화 시켜주세요.
레이아웃 xml 파일 코드(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="product"
type="만든 프로젝트 패키지명.Product" />
<!-- ex) com.example.databinding_example.Product-->
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{product.name}"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{product.price}"
android:textSize="16sp"
android:layout_marginTop="8dp" />
<Button
android:id="@+id/updateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="상품 정보 업데이트"
android:layout_marginTop="16dp" />
</LinearLayout>
</layout>
액티비티 자바 코드
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private Product product;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 데이터 바인딩 설정
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
// 상품 객체 생성
product = new Product("스마트폰", "899,000원");
// 바인딩 객체에 상품 설정
binding.setProduct(product);
// 버튼 클릭 리스너 설정
binding.updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 상품 정보 업데이트
product.setName("태블릿");
product.setPrice("599,000원");
// 바인딩 갱신
binding.invalidateAll();
}
});
}
}
데이터 보관용 클래스
// 간단한 상품 정보 클래스
public class Product {
private String name;
private String price;
public Product(String name, String price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
실행 결과
UI 정보가 변경된 것을 확인할 수 있습니다.