반응형
앱단위 gradle 설정
//build.gradle
android{
//...
dataBinding{
enabled = true
}
}
//...
}
databinding을 사용할 xml을 layout으로 감싸고 data태그 추가
//xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="user"
type="com.example.dataBindingPractice.data.User" />
</data>
<LinearLayout
...
</LinearLayout>
</layout>
→ data 태그의 user변수는 레이아웃 내에서 사용할 수 있는 속성의 이름이고 type은 사용할 속성이다.
layout 내에서 @{} 구문을 사용해서 기록할 수 있다.
ex) @{user.firstName}
data binding을 사용할 수 있도록 class에 입력
//결합
ActivityMainBinding binding
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
binding = dataBindingUtil.setContentView(this, R.layout.activity_main);
User user = new User();
binding.setUser(user);
}
...
bindingAdpater로 직접 레이아웃에 속성을 부여할 수도 있다.
//BindingAdapter.kt
object BindingAdapters {
fun setVisible(view: View, isVisible: Boolean){
view.visibility = if (isVisible) View.VISIBLE else View.GONE
}
}
bindingAdpater 사용 예제
//MainActivity.kt
val liveVisible = MutableLiveData<Boolean>()
override fun OnCreate(saveInstanceState: Bundle){
...
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.apply {
lifecycleOwner = this@MainActivity
activity = this@MainActivity
btnChange1.setOnClickListener{
liveVisible.value = true
}
btnChange2.setOnClickListener {
liveVisible.value = false
}
}
}
//activity_main.xml
<layout...
//...
<data>
<variable
name="activity"
type="com.example.mvvmpractice.MainActivity" />
</data>
//...
<androidx.constraintlayout.widget.ConstraintLayout...
//...
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="내가 사라져 볼게"
//...
app:visible="@{activity.liveVisible}"/>
<Button
android:id="@+id/btn_change1"
//...
/>
<Button
android:id="@+id/btn_change2"
//...
/>
btn1을 누르면 visible이 true로, btn2를 누르면 visible이 false가 되게 된다.
반응형
'IDE & Framework > Android' 카테고리의 다른 글
[Kotlin] ContentResolver 기본 : 통화내역(Call log) 조회 (0) | 2021.11.02 |
---|---|
AAC MVVM - (3)AAC ViewModel + ViewBinding (0) | 2021.10.17 |
AAC MVVM - (1)Live Data (0) | 2021.10.17 |
View binding 사용해보기 (0) | 2021.10.17 |
[Kotlin] retrofit2 간단한 사용법 (0) | 2021.10.17 |