Binding adapter

최희창·2022년 7월 21일
0

Android AAC

목록 보기
10/13

BindingAdapter

  • 속성 값을 설정하거나 이벤트 리스너를 설정하는 것처럼 View(xml 레이아웃)의 attribute를 정의하고 로직을 작성하는 데 사용된다.
  • Android의 기본 UI들은 대부분 이미 정의된 BindingAdapter가 있습니다.
  • BindingAdapter를 사용하려면 DataBinding을 사용하기 위한 세팅이 되어 있어야 합니다.

DataBinding on View

  • Binding에서는 LifecycleOwnwer와 ViewModel 변수를 초기화 할 필요가 있다.

BindingAdapter 적용

@BindingAdapter("bindData")
fun bindRecyclerView(
    recyclerView: RecyclerView?,
    data: ArrayList<Document>?
) {
    val adapter = recyclerView?.adapter as MainSearchRecyclerViewAdapter
    data?.forEach {
        adapter.addPersonItem(it.doc_url)
    }
    adapter.notifyDataSetChanged()
}
  • 첫번째 변수는 속성을 사용할 View 입니다.
  • 두번째 변수는 BindingAdapter의 로직에 사용될 Parameter 입니다.

XML에 적용

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/main_activity_search_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:paddingTop="12dp"
    android:paddingBottom="12dp"
    bindData="@{model.personData}"/>

ViewModel 로직

// MainViewModel.kt
private val _personData = MutableLiveData<ArrayList<Document>>()

val personData: LiveData<ArrayList<Document>>
    get() = _personData
  • 리스트로 나타날 데이터를 레이아웃에 출력하기 위해 해당 데이터를 ViewModel에 담습니다.
  • 뷰모델의 LiveData가 데이터 변경을 감지하면 bindData가 작동합니다.
profile
heec.choi

0개의 댓글