[android] 데이터 바인딩으로 멀티모듈 바인딩 구현

안녕하세요! 안드로이드 앱을 개발하다보면 하나의 모듈이 아닌 여러 모듈을 사용하는 경우가 있습니다. 이때 데이터 바인딩을 이용하여 멀티모듈 바인딩을 구현하는 방법에 대해 알아보겠습니다.

멀티모듈 바인딩이란?

멀티모듈 바인딩은 안드로이드 앱에서 여러 모듈에 있는 데이터를 바인딩하여 화면에 표시하는 기능을 말합니다. 이를 통해 앱의 모듈 간 데이터 흐름을 관리하고 화면을 업데이트하는 데 유용합니다.

데이터 바인딩 설정

먼저 build.gradle 파일에서 데이터 바인딩을 활성화합니다.

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

그런 다음 모듈의 레이아웃 XML 파일 상단에 다음과 같이 데이터 바인딩을 선언합니다.

<layout>
    <data>
        <import type="com.example.model.User" />
        <variable
            name="user"
            type="User" />
    </data>
    <LinearLayout
        ...>
        ...
    </LinearLayout>
</layout>

<variable> 태그를 사용하여 해당 레이아웃에서 사용할 데이터 모델을 정의합니다.

멀티모듈 바인딩 구현

다음으로 멀티모듈 바인딩을 위해 데이터 모델이 있는 모듈에서 데이터를 가져옵니다. 그 후 이 데이터를 DataBindingUtil 클래스를 사용하여 바인딩합니다.

// MainActivity.java

import com.example.model.User;
import com.example.module1.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        User user = getUserFromModule1(); // 모듈에서 데이터 가져오기
        
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.setUser(user); // 데이터 바인딩
    }
}

위 예시에서 ActivityMainBinding은 데이터 바인딩 클래스이며, setContentView 대신 DataBindingUtil.setContentView 메서드를 사용하여 화면을 설정합니다.

결론

데이터 바인딩을 활용하여 멀티모듈 바인딩을 구현하면 앱의 구조를 더욱 모듈화하고 유연하게 관리할 수 있습니다. 멀티모듈 환경에서도 데이터의 흐름을 효과적으로 제어할 수 있으며, UI 업데이트에 용이한 장점이 있습니다.

감사합니다!